2014-09-13 109 views
6

如何獲得ListView項目的所有子項?
有方法讓孩子在位置,但我無法找到任何方法返回ListView的項目中的所有兒童的集合。獲取所有ListView項目(行)

更新:我剛發現我需要ListView項目(行)來代替。我怎樣才能做到這一點?
我在做的是,比較所選項目ListView與所有項目。

+0

不完全確定你爲什麼要這樣做,但是直接從適配器中提取所有數據不是更好嗎?而不是從ListView中拉取視圖。 – 2014-09-13 11:24:32

回答

4

你從列表適配器的所有列表項,通過迭代如下

for (int i=0;i<adapter.getCount();i++){ 
    adapter.getItem(i); 
} 

更新

for (int i=0;i<adapter.getCount();i++){ 
    if(adapter.get(selectedIndex)==adapter.getItem(i)){ 
     // TODO : write code here item match 
     break; // after match is good practice to break loop instead compare rest of item even match 
    } 
} 
+0

請參閱更新的問題。 – Nitish 2014-09-13 10:07:15

1

五月:您可以使用索引,帶有表適配器下的所有項目比較特殊項目當你正在尋找這樣的事情。您需要有權訪問rootView,您可以從中獲取子視圖。 onItemSelected僅用於提供點擊位置的rootview。

public void onItemSelected(AdapterView<?> parent, View view, int pos,long id) { 
ImageView imgView = view.findViewById(R.id.myImageView);//your imageview that is inflated inside getView() of adapter 
//similarly for other views 
} 
3

使用此方法來獲取所有的洞察力和出視線視圖列表視圖:

for (int i = 0 ; i < listView.getCount() ; i++){ 
    View v = getViewByPosition(i,listView); 
} 

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

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

我想如果在ListView你的項目類型ViewGroup你可以做以下

ArrayList<View> children = new ArrayList<View>(); 
for (int i = item.getChildCount() - 1 ; i>=0; i--) { 
    children.add(item.getChildAt(i)); 
} 
+0

這應該是被接受的答案。 – josh123a123 2017-03-03 19:15:04