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);
    }
});
Était-ce utile?

La solution

Si vous travaillez avec ListViews 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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top