Définir l'élément vérifié dans ONITEMCLICK / ListView /
-
28-10-2019 - |
Question
J'ai une activité avec ListView et Buttons - "Effacer tout" et "OK". Sur le bouton "Effacer tout", j'efface l'état vérifié des éléments - cela fonctionne bien.
m_list.setItemChecked(pos, false);
Sur ONITEMCLICK, j'essaie de modifier l'état des éléments / vérifié <-> sans contrôle / en fonction de la logique métier compliquée. La couche bussines décide vérifiée ou non pour plus d'un élément. J'essaye le même code:
m_list.setItemChecked(position, bCheck);
Ça ne marche pas. Les données derrière ne sont modifiées que la vue non.
Code "effacer tout":
@Override
public void onClick(View v)
{
if (v == m_map)
GoToMap();
else if (v == m_clear)
{
for (int i=0; i < m_poiCategories.size();i++)
m_list.setItemChecked(pos, false);
}
}
Ce code ne fonctionne pas:
m_list.setOnItemClickListener(new OnItemClickListener()
{
@Override
public void onItemClick(AdapterView<?> listView, View selectedItem, int position, long itemId)
{
boolean b = true;
....
m_list.setItemChecked(position, b);
}
});
La solution
Si vous travaillez avec ListView
s que ce qui est nécessaire que notifyDataSetChanged()
être appelé à partir du thread d'interface utilisateur lorsque des données sont modifiées. Cela mettra à jour l'interface utilisateur en appelant getView()
Plusieurs fois, selon le nombre d'éléments affichés.
Assurez-vous que votre getView()
est correctement implémenté.
Pour référence, je recommande fortement de voir et de comprendre: http://www.youtube.com/watch?v=WDBM6WVEO70