web-dev-qa-db-ja.com

Android ListView:表示アイテムのデータインデックスを取得

Android ListViewを使用して作成され、画面に収まらないほど多くのアイテムが含まれるSimpleAdapterがあります。リストをスクロールした後、リスト内の最初の表示項目のデータモデル内の位置を取得します。

基本的に、listView.getChildAt(0).getPositionInDataModel()のような関数が必要です。

Adapterには、getItemId(position)のように便利な関数がいくつかあります。ただし、SimpleAdapter実装は、期待どおりの行IDではなく、渡された位置を返すだけです。

総当たりの解決策は、インデックス0でビューを取得し、アダプター内の各アイテムのビューと比較することです。ただし、アダプターから特定の位置のビューを取得する簡単な方法はないようです。

誰もが考えている?

34
Cheryl Simon

それは非常に簡単です。 ListView.getFirstVisiblePosition() + indexYouWantを使用してください。たとえば、ListViewに表示されている2番目の子のアダプターの位置を取得するには、getFirstVisiblePosition() + 1を使用します。

上記の返信に示されているすべての恐ろしいものは必要ありません:)

90
Romain Guy
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
    }
});

これで、リストアイテムID parent.getSelectedItemId();を取得します。

1
varma