我有一个 ListView,它已使用适配器填充了包含数据的行。 行布局为“RelativeLayout”类型,包含各种 View 对象,其中一个id为“@+id/bar_fill”。
我有一个循环遍历 ListView 的所有子项,我想“获取”我上面提到的 View 项。
我使用的代码是:
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));
它返回空值。
我做错了什么?
最佳答案
在自定义适配器中覆盖此函数。
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 现在是您需要的 View ...:P
关于android - 如何获取复杂 ListView 行 View 中的 View ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8177995/