Jetzt kostenlos registrieren. Mitglieder surfen ohne Werbung auf Android-Hilfe.de!
Zurück   Android-Hilfe.de > Android Developer > Android App Entwicklung

ListAdapter Hintergrundfarbe abhängig vom Inhalt

Das Thema "ListAdapter Hintergrundfarbe abhängig vom Inhalt" befindet sich unter Android App Entwicklung auf Android-Hilfe.de.


Antwort

 

Themen-Optionen Ansicht
Alt 12.08.2011, 19:24   #1 (permalink)
Android-Hilfe.de Mitglied
 
Benutzerbild von bauerj

Registriert seit: 04.01.2011
Beiträge: 69
Abgegebene Danke: 14
Erhielt 8 Danke für 6 Beiträge
Standard ListAdapter Hintergrundfarbe abhängig vom Inhalt

Hi,

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.
bauerj ist offline   Mit Zitat antworten
Alt 12.08.2011, 19:42   #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
Standard AW: ListAdapter Hintergrundfarbe abhängig vom Inhalt

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?
soma-web ist offline   Mit Zitat antworten
Alt 12.08.2011, 19:56   #3 (permalink)
Android Experte
 
Benutzerbild von DieGoldeneMitte

Registriert seit: 05.02.2010
Beiträge: 609
Abgegebene Danke: 75
Erhielt 136 Danke für 119 Beiträge
Standard AW: ListAdapter Hintergrundfarbe abhängig vom Inhalt

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.
DieGoldeneMitte ist offline   Mit Zitat antworten
Alt 12.08.2011, 20:17   #4 (permalink)
Android-Hilfe.de Mitglied
 
Benutzerbild von bauerj

Registriert seit: 04.01.2011
Beiträge: 69
Abgegebene Danke: 14
Erhielt 8 Danke für 6 Beiträge
Standard AW: ListAdapter Hintergrundfarbe abhängig vom Inhalt

Zitat:
Zitat von soma-web Beitrag anzeigen
Aber ich verstehe nicht wie du die TextViews erzeugst und wieso die die selbe id haben sollten?
So:
PHP-Code:
String[] from = new String[] { DatabaseAdapter.KEY_DAY,DatabaseAdapter.KEY_S1,DatabaseAdapter.KEY_S2DatabaseAdapter.KEY_S3DatabaseAdapter.KEY_S4 };
        
int[] to = new int[] { R.id.text1R.id.text2R.id.text3R.id.text4R.id.text5 };
    
SimpleCursorAdapter adapter =
            new 
SimpleCursorAdapter(thisR.layout.rowcfromto);
        
setListAdapter(adapter); 
Zitat:
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.
Das heißt, die einzige Möglichkeit wäre, die Adapterfunktion zu überschreiben, oder wie?
bauerj ist offline   Mit Zitat antworten
Alt 13.08.2011, 10:30   #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
Standard AW: ListAdapter Hintergrundfarbe abhängig vom Inhalt

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;
		}
}
Hierbei ist halt ganz nett, dass du die Parametrisierung (also das <String>) auch durch eigene Entitiy-Klassen ersetzen kannst, z.B. 'ne Klasse
Code:
public class MeinEntity{
 private String titel;
 private String text;
 private Color hintergrundFarbe;

 ... getter&setter dafür ....
}
Die einzelnen Instanzen erzeugste dann über 'ne Klasse die deine Datenbank abfragt und dir 'ne Liste mit deinen Objekten zurückgibt.

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);
sixi ist offline   Mit Zitat antworten
Folgender Benutzer bedankt sich bei sixi für diesen Beitrag:
bauerj (13.08.2011)
Alt 13.08.2011, 11:39   #6 (permalink)
Android-Hilfe.de Mitglied
 
Benutzerbild von bauerj

Registriert seit: 04.01.2011
Beiträge: 69
Abgegebene Danke: 14
Erhielt 8 Danke für 6 Beiträge
Standard

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?
bauerj ist offline   Mit Zitat antworten
Alt 13.08.2011, 12:01   #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
Standard AW: ListAdapter Hintergrundfarbe abhängig vom Inhalt

Schau dir mal Android:Color an. Da sind ein ganz paar vordefinierte Farben enthalten, ansonsten z.B. per Color.rgb(r,g,b)
sixi ist offline   Mit Zitat antworten
Folgender Benutzer bedankt sich bei sixi für diesen Beitrag:
bauerj (13.08.2011)
Antwort

Stichworte
-

Themen-Optionen
Ansicht


Ähnliche Themen

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




Du liest gerade: "ListAdapter Hintergrundfarbe abhängig vom Inhalt" unter "Android App Entwicklung" auf Android-Hilfe.de.


Powered by vBulletin®
Copyright ©2000 - 2012, vBulletin Solutions, Inc.
Search Engine Friendly URLs by vBSEO
© Android-Hilfe.de 2012 - All rights reserved.