2017-03-03 22 views
2

私は現在、ListViewの中に子の行を取得するためにgetChildAtメソッドを使用しています。この問題は、ListViewが一番上までスクロールされている場合にのみ子を正しく取得できることです。ListViewで子の実際のインデックスを取得する方法は?

最初の行が非表示になるように少しスクロールして、位置1にgetChildAtメソッドを呼び出すと、ListViewの3番目のビューが表示されます。

画面に表示される位置ではなく実際の位置で子ビューを取得する方法はありますか?したがって、上記の場合、getChildAtは画面に表示されていなくてもビュー(2番目の子)を返します。

答えて

1
public View getViewByPosition(int pos, ListView listView) { 
final int firstListItemPosition = listView.getFirstVisiblePosition(); 
final int lastListItemPosition = firstListItemPosition + listView.getChildCount() - 1; 

if (pos < firstListItemPosition || pos > lastListItemPosition) { 
    return listView.getAdapter().getView(pos, null, listView); 
} else { 
    final int childIndex = pos - firstListItemPosition; 
    return listView.getChildAt(childIndex); 
}} 

参照:android - listview get item view by position

関連する問題