Overriding Android ArrayAdapter

Ich möchte eine ganz einfache Sache machen. Ich habe eine Listenansicht in meiner Anwendung, die ich dynamisch Text hinzufügen kann. Aber nach einem gewissen Punkt möchte ich die Farbe des Textes innerhalb der Listenansicht ändern. Also habe ich ein XML definiert, das mein benutzerdefiniertes Listenelement definiert und den ArrayAdapter unterteilt hat. Aber wann immer ich die add () – Methode auf meinem benutzerdefinierten ArrayAdapter anrufe, wird ein Item der Listenansicht hinzugefügt, aber der Text wird nicht darauf gelegt.

Hier ist mein XML: `

  • So aktualisieren Sie eine Textansicht einer Aktivität aus einer anderen Klasse
  • Was ist die Funktion von aapt.exe in Android?
  • Hilfe, um eine ArrayList von Objekten zu einer neuen Aktivität zu übergeben
  • Wie können wir Höhe und Breite dp für Imageview in android setzen?
  • Android Facebook Sperrbildschirm Benachrichtigung
  • Verwenden Sie Backstack mit ViewPager
  • <TextView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/list_content" android:textSize="8pt" android:gravity="center" android:layout_margin="4dip" android:layout_width="fill_parent" android:layout_height="wrap_content" android:textColor="#FF00FF00"/> 

    Und meine ArrayAdapter-Unterklasse:

     private class customAdapter extends ArrayAdapter<String> { public View v; public customAdapter(Context context){ super(context, R.layout.gamelistitem); } @Override public View getView(int pos, View convertView, ViewGroup parent){ this.v = convertView; if(v==null) { LayoutInflater vi = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE); v=vi.inflate(R.layout.gamelistitem, null); } if(timeLeft!=0) { TextView tv = (TextView)v.findViewById(R.id.list_content); //tv.setText(str[pos]); tv.setTextColor(Color.GREEN); } else { TextView tv = (TextView)v.findViewById(R.id.list_content); //tv.setText(str[pos]); tv.setTextColor(Color.RED); } return v; } } 

    Ich bin mir sicher, dass ich etwas schrecklich falsch mache, aber ich bin immer noch ein bisschen neu für Android.

    Vielen Dank! "

  • Android Remote Debugging funktioniert nicht unter Windows 7
  • So stellen Sie Timeout in Retrofit-2.0 + Android ein
  • Wie kann man überprüfen, ob die aktuelle Aktivität einen Dialog vor sich hat?
  • Das Herunterladen mehrerer Dateien gleichzeitig in Android-Anwendungen
  • Wie bekomme ich getWindow () außerhalb einer Aktivität in Android?
  • Wie man einen Cookie-String analysiert
  • One Solution collect form web for “Overriding Android ArrayAdapter”

    Sie müssen den Text in getView() . Holen Sie sich den Wert mit getItem(pos) , dann setzen Sie es.

     public View getView(int pos, View convertView, ViewGroup parent){ this.v = convertView; if(v==null) { LayoutInflater vi = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE); v=vi.inflate(R.layout.gamelistitem, null); } // Moved this outside the if blocks, because we need it regardless // of the value of timeLeft. TextView tv = (TextView)v.findViewById(R.id.list_content); tv.setText(getItem(pos)); if(timeLeft!=0) { //TextView tv = (TextView)v.findViewById(R.id.list_content); //tv.setText(str[pos]); tv.setTextColor(Color.GREEN); } else { //TextView tv = (TextView)v.findViewById(R.id.list_content); //tv.setText(str[pos]); tv.setTextColor(Color.RED); } return v; } 

    Auch gibt es einen Grund, dass du v als Mitgliedsvariable speicherst, anstatt nur innerhalb der Funktion?

    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.