如何获得ListView
项目的所有子项?
有方法让孩子在位置,但我无法找到任何方法返回ListView
的项目中的所有儿童的集合。获取所有ListView项目(行)
更新:我刚发现我需要ListView
项目(行)来代替。我怎样才能做到这一点?
我在做的是,比较所选项目ListView
与所有项目。
如何获得ListView
项目的所有子项?
有方法让孩子在位置,但我无法找到任何方法返回ListView
的项目中的所有儿童的集合。获取所有ListView项目(行)
更新:我刚发现我需要ListView
项目(行)来代替。我怎样才能做到这一点?
我在做的是,比较所选项目ListView
与所有项目。
你从列表适配器的所有列表项,通过迭代如下
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
}
}
请参阅更新的问题。 – Nitish 2014-09-13 10:07:15
五月:您可以使用索引,带有表适配器下的所有项目比较特殊项目当你正在寻找这样的事情。您需要有权访问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
}
使用此方法来获取所有的洞察力和出视线视图列表视图:
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);
}
}
我想如果在ListView
你的项目类型ViewGroup
你可以做以下
ArrayList<View> children = new ArrayList<View>();
for (int i = item.getChildCount() - 1 ; i>=0; i--) {
children.add(item.getChildAt(i));
}
这应该是被接受的答案。 – josh123a123 2017-03-03 19:15:04
不完全确定你为什么要这样做,但是直接从适配器中提取所有数据不是更好吗?而不是从ListView中拉取视图。 – 2014-09-13 11:24:32