J'ai un Android ListView
créé avec un SimpleAdapter
qui contient plus d'éléments qu'il n'en tient à l'écran. Après avoir fait défiler la liste, je dois obtenir la position dans le modèle de données du premier élément visible de la liste.
Fondamentalement, je veux une fonction comme: listView.getChildAt(0).getPositionInDataModel()
.
Adapter
contient quelques fonctions, comme getItemId(position)
qui semblait utile; cependant, l'implémentation SimpleAdapter
renvoie simplement la position passée, pas un identifiant de ligne comme je l'espérais.
Une solution de force brute serait d'obtenir la vue à l'index 0 et de la comparer à la vue de chaque élément de l'adaptateur. Cependant, il ne semble pas y avoir de moyen facile d'obtenir la vue pour une position particulière de l'adaptateur.
Quelqu'un a des pensées?
C'est très facile. Utilisez simplement ListView.getFirstVisiblePosition() + indexYouWant
. Par exemple, pour obtenir la position dans l'adaptateur du 2ème enfant affiché dans le ListView
, il suffit d'utiliser getFirstVisiblePosition() + 1
.
Pas besoin de tous les trucs effrayants montrés dans la réponse ci-dessus :)
listView.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener()
{
public void onItemSelected(AdapterView<?> parent,View view, int pos, long id)
{
AisleId= parent.getSelectedItemId();
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
// TODO Auto-generated method stub
}
});
Dans cela, nous obtiendrons l'ID de l'élément de liste parent.getSelectedItemId ();