| |||||||
Das Thema "ListAdapter Hintergrundfarbe abhängig vom Inhalt" befindet sich unter Android App Entwicklung auf Android-Hilfe.de.
|
| | Themen-Optionen | Ansicht |
| | #1 (permalink) |
| Android-Hilfe.de Mitglied Registriert seit: 04.01.2011
Beiträge: 69
Abgegebene Danke: 14
Erhielt 8 Danke für 6 Beiträge
| ich bin gerade dabei, meine erste Android-Applikation zu schreiben ![]() Leider habe ich im Moment folgendes Problem: Ich zeige mit einem ListAdapter eine Liste an, ähnlich wie in der Notepad-Beispielanwendung. Ich will aber den einzelnen TextViews in der Liste einzelne Hintergrundfarben, abhängig vom Inhalt anzeigen. Den Inhalt bekomme ich aber nicht einmal ausgelesen, da der Adapter die row.xml ja immer wieder anhängt und somit IDs doppelt und dreifach vergeben werden :S Wie kann ich die jetzt genau bestimmen, um in einer Schleife den Hintergrund zu ändern? Danke im Vorraus. |
| | |
| | #2 (permalink) |
| Android-Hilfe.de Mitglied Registriert seit: 06.07.2011
Beiträge: 71
Abgegebene Danke: 14
Erhielt 7 Danke für 7 Beiträge
|
Erzeugst du die TextViews im Java Code oder in der XML? kannst ihnen doch beim erzeugen auch ids zuordnen, und dann gehst du im java code Textview.setBackgroundColor(Color) und dann sollte das doch gehen? Aber ich verstehe nicht wie du die TextViews erzeugst und wieso die die selbe id haben sollten? |
| | |
| | #3 (permalink) |
| Android Experte Registriert seit: 05.02.2010
Beiträge: 609
Abgegebene Danke: 75
Erhielt 136 Danke für 119 Beiträge
|
Das mit den "doppelten IDs" stimmt nicht so ganz. Der Adapter rendert (normalerweise) im getView einfach den selben View für die Row immer wieder neu. Dort kannst Du dich dann auch einklinken und Farben setzen.
__________________ Kein Support via PN/eMail. Bitte das Forum benutzen - dort haben alle etwas davon. Bei Entwicklerfragen zu abstürzenden Apps bitte immer die Ausgabe von LogCat posten. Tipp: Zum "Danke" sagen gibt es einen Button. ![]() |
| | |
| | #4 (permalink) | ||
| Android-Hilfe.de Mitglied Registriert seit: 04.01.2011
Beiträge: 69
Abgegebene Danke: 14
Erhielt 8 Danke für 6 Beiträge
| Zitat:
PHP-Code: Zitat:
| ||
| | |
| | #5 (permalink) |
| Erfahrener Benutzer Modell: G1 DevPhone / SGS2 / SGT10.1v Registriert seit: 20.01.2009
Beiträge: 238
Abgegebene Danke: 7
Erhielt 50 Danke für 47 Beiträge
|
Spontan würd ich sagen ja Wobei das nun auch nicht die übelste Magic ist.Entweder du nimmst 'nen ArrayAdapter, dann sieht das ganze so aus: Code: class MyAdapter extends ArrayAdapter<String> {
private Context mContext;
private LayoutInflater mLayoutInflater;
private List<String> mObjects;
public MyAdapter(Context context, int textViewResourceId, List<String> objects) {
super(context, textViewResourceId, objects);
mLayoutInflater = getActivity().getLayoutInflater();
mObjects = objects;
mContext = context;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
String s = getItem(position);
View v = convertView;
if (v == null) {
v = mLayoutInflater.inflate(R.layout.DEINE_ROW, null);
}
TextView tv = (TextView) v.findViewById(R.id.TextView01);
tv.setText(s);
tv.setBackgroundColor(DEINE-COLOR);
return v;
}
} Code: public class MeinEntity{
private String titel;
private String text;
private Color hintergrundFarbe;
... getter&setter dafür ....
} In deinem Fall wohl noch einfacher, aber nicht so flexibel du überschreibst direkt den SimpleCursorAdapter (nicht getestet... sollte aber ungefähr so gehen): Code: SimpleCursorAdapter adapter = new SimpleCursorAdapter(this, R.layout.row, c, from, to){
@Override
public View getView(int position, View convertView, ViewGroup parent) {
convertView = super.getView(position, convertView, parent);
TextView tv = (TextView) convertView.findViewById(R.id.TextView01);
tv.setText(s);
tv.setBackgroundColor(DEINE-COLOR);
return convertView;
}
};
setListAdapter(adapter); |
| | |
| Folgender Benutzer bedankt sich bei sixi für diesen Beitrag: | bauerj (13.08.2011) |
| | #6 (permalink) |
| Android-Hilfe.de Mitglied Registriert seit: 04.01.2011
Beiträge: 69
Abgegebene Danke: 14
Erhielt 8 Danke für 6 Beiträge
|
Wow, da hast du dir aber Mühe gegeben, danke ![]() Das werde ich gleich heute Abend ausprobieren, aber eine Frage habe ich noch: Die Funktion erwartet ja ein Integer als Parameter. Farben kenne ich aber nur als, "#fff" oder so. Kann ich die Hex-werte einfach umrechnen, oder wie? |
| | |
| | #7 (permalink) |
| Erfahrener Benutzer Modell: G1 DevPhone / SGS2 / SGT10.1v Registriert seit: 20.01.2009
Beiträge: 238
Abgegebene Danke: 7
Erhielt 50 Danke für 47 Beiträge
|
Schau dir mal Android:Color an. Da sind ein ganz paar vordefinierte Farben enthalten, ansonsten z.B. per Color.rgb(r,g,b)
|
| | |
| Folgender Benutzer bedankt sich bei sixi für diesen Beitrag: | bauerj (13.08.2011) |
![]() |
|
| Themen-Optionen | |
| Ansicht | |
| |
| ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| Listadapter: Auslassen von Items | Schwede | Android App Entwicklung | 2 | 17.05.2011 19:10 |
| Ist die ROM-Installation vom Baseband abhängig? | njagulo | Root / Hacking / Modding für Nexus One | 7 | 23.11.2010 18:55 |
| Fehlerhafte Handys - abhängig vom Herstelldatum? | derhuebiii | Acer Liquid Forum | 11 | 04.06.2010 13:15 |
| Kompletter Inhalt vom E71 aufs Desire | mongobongo | HTC Desire Forum | 2 | 29.05.2010 15:18 |
| Hintergrundfarbe vom Tab ändern | Raidri | Android App Entwicklung | 0 | 07.05.2010 09:30 |