【发布时间】:2016-03-17 07:05:27
【问题描述】:
我正在尝试为每一行制作一个列表视图:标题和项目网格。使用下面的代码,我得到了正确标题的列表,但每一行的 gridView 都填充了最后一行的项目。
日志显示,每次调用 getView 时,它都会获取具有正确标题的正确项目。我怀疑有一个共享引用,或者我在某处写错了行。
类似的问题都是观点回收的问题,我做对了。
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if (convertView == null) {
convertView = l_Inflater.inflate(R.layout.list_item_my_listview, null);
holder = new ViewHolder();
holder.txt_name = (TextView) convertView.findViewById(R.id.name);
holder.myGridView = (GridView) convertView.findViewById(R.id.my_gridview);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
listItemDetails item = itemDetailsArrayList.get(position);
holder.txt_name.setText(item.name);
gridItemListAdapter gridArrayAdapter = new gridItemListAdapter(context, item.getGridItems());
holder.myGridView.setAdapter(gridArrayAdapter);
Util.Log(getClass().getName());
Util.Log(cabinetId + " - " + cabinet.getCageList().size());
return convertView;
}
【问题讨论】:
-
您对所有行使用相同的适配器。所以当最后一行得到更新时,所有网格项的值都是一样的......
-
@HourGlass 这可以解释。但是每次调用 getView 时,我都会使用正确的项目创建一个新的 gridItemListAdapter 实例。那怎么一样呢?
-
你能检查一下你的数据,是否所有的数据都是唯一的?
-
@NigamPatro 是的。一行有 1 项,另外 7 项,因此它们非常不同。现在我只看到两行都有相同的 1 项。在日志记录中,它清楚地表明正确的 ID 与正确的项目数相匹配。所以发生的事情显然是它以某种方式为 gridview 设置了正确的值,然后在设置下一行时覆盖它。
-
意思是,整个gridview?
标签: java android listview gridview