J'ai un ListView. Lorsque je clique sur un ListItem, je mets l'arrière-plan de la ListItem (il est vue) à une autre couleur:Problème de sélecteur ListView: la sélection n'est pas supprimée
listView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> a, View v, int position, long id) {
setupDetailView(position);
setupChartView(position);
setupARView(position);
emptyView.setVisibility(View.INVISIBLE);
quotesAdapter.isSelected = true;
//v.setBackgroundResource(R.drawable.stocks_selector);
}
});
ici est mon adaptateur:
private class QuoteAdapter extends ArrayAdapter<Quote> {
private ArrayList<Quote> items;
public boolean isSelected = false;
public QuoteAdapter(Context context, int textViewResourceId, ArrayList<Quote> items) {
super(context, textViewResourceId, items);
this.items = items;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View v = convertView;
if (v == null) {
LayoutInflater vi = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = vi.inflate(R.layout.mainrow, null);
if(isSelected)
v.setBackgroundResource(R.drawable.red);
else
v.setBackgroundResource(R.drawable.transparent_background);
}
Le problème est, si je sélectionne plusieurs lignes , puis plusieurs lignes ont un arrière-plan coloré. Je veux seulement que l'élément cliqué ait un arrière-plan coloré. Donc, si je clique sur la ligne 2, je veux qu'il devienne rouge, puis si je clique sur la ligne 1, je veux que la ligne 2 revienne à la normale, et la ligne 1 pour devenir rouge.
Comment est-ce que je peux faire ceci?
Pas de chance, même résultat. –
Vous avez supprimé l'appel à setBackground, n'est-ce pas? –
Um, vous n'avez pas besoin de liste d'état pour cela. ListView gérera ce qui est sélectionné. Vérifiez les drawables SDK (liste .... xml) pour voir comment construire des sélecteurs. –