Ich versuche, eine benutzerdefinierte Listenansicht zu implementieren. Alles funktioniert gut, bis ich eine if()
Anweisung innerhalb der getView()
Methode verwendenZwei Einträge werden in der Listenansicht Android ausgewählt
Ohne die if()
Zustand ein einzelnes Element ausgewählt wird, wenn ich einen Artikel auswählen, aber wenn ich die if()
Bedingung hinzufügen, werden die Ansichten angezeigt richtig, aber zwei Elemente (Nicht- angrenzend) ausgewählt werden (1. und letztes 1. oder vorletztes, irgendeine solche Kombination).
View getView(...){
....
if (!item.getPriceTo().equals(""))
priceToTV.setText(item.getPriceTo());
else
priceToTV.setText(item.getPriceFrom());
return view;
}
Auch verwende ich die vorherige Ansicht Speichern der Auswahl zu zeigen, so dass die aktuelle Auswahl eine red_border hat und wenn es ein black_border ausgewählt wird, auf ihn .:
subItemsListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
Log.d("New Order", "........");
if (previousViewOfSubItems != null && previousViewOfSubItems != view) {
previousViewOfSubItems.setBackgroundResource(R.drawable.black_border);
if (quantity.getText().toString().equals("xx") || quantity.getText().toString().equals("0")) {
viewForVisibility.setVisibility(View.GONE);
layoutForQuantity.setVisibility(View.GONE);
}
}
if (previousViewOfSubItems == view)
return;
previousViewOfSubItems = view;
previousViewOfSubItems.setBackgroundResource(R.drawable.red_border);
viewForVisibility = previousViewOfSubItems.findViewById(R.id.viewForVisibility);
viewForVisibility.setVisibility(View.VISIBLE);
layoutForQuantity = (LinearLayout) previousViewOfSubItems.findViewById(R.id.layoutForQuantity);
layoutForQuantity.setVisibility(View.VISIBLE);
quantity = (TextView) previousViewOfSubItems.findViewById(R.id.subTypeQuantity);
}
});
seine beacause es Listenansicht Ansicht wieder verwendet Elemente anzuzeigen, sobald die erste Ansicht ist, die die gleiche Ansicht gescrollt aus wiederverwendet die Ansicht im unteren Bereich der Anzeige des Menüs Listenansicht. Vergleichen Sie nicht die Ansicht, sondern vergleichen Sie die Position der angeklickten Ansicht. –