Ich muss zugeben, dass die Theorie der Adapter mir nicht völlig klar ist. In meiner App habe ich ListView mit Parkplatznummern erstellt und möchte eine Textfarbe basierend auf ihrer Verfügbarkeit ändern. ListView-Elemente erhalten Zahlen aus dem Array mit "Dock" -Objekten, wobei jeder DockPlace über die ID (Nummer) und den Verfügbarkeitsstatus verfügt. Mein Adapter kann Zahlen aus dem Dock-Objekt übernehmen und in ListView einfügen. Es kann auch Textfarbe ändern, aber ich habe keine Ahnung, wie ich andere Parameter über Objekte erhalten kann.Wie kann der Adapter andere Parameter vom Array mit Objekten an Listview senden?
Adapter:
ListView docksList = (ListView) findViewById(R.id.docksList);
ArrayAdapter<Dock> listAdapter = new ArrayAdapter<Dock>(
this,
android.R.layout.simple_list_item_1,
Dock.docks //Dock - class name. docks - name of array with Dock Objects
) {
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view = super.getView(position, convertView, parent);
TextView text = (TextView) view.findViewById(android.R.id.text1);
//in this place could be IF statement which check status of dock and can change text color depends on its
text.setTextColor(Color.BLUE);
return view;
}
};
Dock:
public static final Dock[] docks = {
new Dock(1, true),
new Dock(2, true),
new Dock(3, false),
};
private Dock(int number, boolean isAvailable) {
this.number = number;
this.isAvailable = isAvailable;
}
public int getNumber() {
return number;
}
public boolean getStatus() {
return isAvailable;
}
public String toString() {
String numberStr = "Dock no "+ String.valueOf(this.number);
return numberStr;
}
haben Sie versuchen, wenn sonst, wo Sie innerhalb getView() -Methode kommentiert, wird es funktionieren, wenn Sie es hinzufügen –
boolean availableStatus = listAdapter .get (Position) .getStatus(); überprüfen Sie mit dieser, wenn True Set Farbe –
einfach! machen Sie eine Schleife, um das Array zu iterieren, um die Indizes zu nehmen, die Listenansicht Felder Positionen werden die gleichen mit Ihrem Array so listView.get (Position) ist gleich Docks.get (Position) auf diese Weise können Sie erhalten das vollständige Objekt, selbst wenn die Liste nicht mit dem vollständigen Objekt ausgeführt wird –