我有一个ListView,它由使用适配器的数据行填充。 行布局为“RelativeLayout”类型,包含各种视图对象,其中一个的id为“@ + id / bar_fill”。
我有一个循环遍历ListView的所有子节点,我想“获取”上面提到的视图项。
我正在使用的代码是:
ListView list = getListView();
int count = list.getCount();
for (int i = 0; i < count; i++)
{
RelativeLayout row = (RelativeLayout) list.getChildAt(i);
View bar = row.findViewById(R.id.bar_fill);
}
然而,当它到达最后一行时,它会崩溃。当我评论出来并做了
System.out.println(findViewById(R.id.bar_fill));
它返回了空值。
我做错了什么?
答案 0 :(得分:3)
在自定义适配器中覆盖此功能。
public View getView(int position, View convertView, ViewGroup parent);
View v = convertView;
if (v == null) {
LayoutInflater vi = (LayoutInflater) c
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = vi.inflate(id, null);
}
现在,如果你想从listview行项目中获得某些textview,那么就这样做:
TextView t1 = (TextView) v.findViewById(com.pis.prototype.R.id.TextView01);
t1现在是您需要的视图......:P
答案 1 :(得分:0)
如果您想在列表视图中获取已更新/创建的项目,并希望从某行获取某些视图。然后就这样做..:
for (int i = 0; i < yourCustomAdapter.size(); i++) {
View viewRow = listViewParts.getChildAt(i);
CheckBox chkBox = (CheckBox) viewRow
.findViewById(R.id.checkBox);
yourCustomAdapter.get(i).attachmentCheck = chkBox
.isChecked();
}
在上面的例子中,我从列表视图中提取了复选框视图。