我一直在使用plattysoft的ListAsGridBaseAdapter显示顶部带有可滚动标题的 gridview 项目。我的 gridview 有 2 列,当我要显示奇数个项目(例如 1 个项目)时,gridview 上不会显示任何内容,仅显示标题。仅当项目数为偶数(例如 2 或 4 个项目)时才会显示这些项目。
我已经尝试调试这个有一段时间了,但无法弄清楚 code 中的内容链接导致了这种情况。
编辑:网格不显示 1、3、5、7 和 9 个 gridview 项目的第 n 个奇数元素。如果您有 10 个或更多 gridview 项目,那么它会显示所有项目。
ListAsGridExampleAdapter.java 的编辑版本如下:
public class ListAsGridExampleAdapter extends ListAsGridBaseAdapter {
private List<Item> items = new ArrayList<Item>();
private LayoutInflater inflater;
private Context context;
public ListAsGridAdapter(Context context) {
super(context);
this.context = context;
inflater = LayoutInflater.from(context);
items.add(new Item("item 1/5", "item", R.drawable.item_pic, 0, 0));
items.add(new Item("item 2/5", "item", R.drawable.item_pic, 0, 0));
items.add(new Item("item 3/5", "item", R.drawable.item_pic, 0, 0));
items.add(new Item("item 4/5", "item", R.drawable.item_pic, 0, 0));
items.add(new Item("item 5/5", "item", R.drawable.item_pic, 0, 0));
}
@Override
public Object getItem(int position) {
return items.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public int getItemCount() {
return items.size();
}
@Override
protected View getItemView(int position, View view, ViewGroup viewGroup) {
View item = view;
if (view == null) {
item = inflater.inflate(R.layout.item_view, viewGroup, false);
item.setTag(R.id.item_icon, item.findViewById(R.id.item_icon));
item.setTag(R.id.item_title, item.findViewById(R.id.item_title));
}
Item currentItem = (Item)getItem(position);
// Fill the view
ImageView itemImage = (ImageView)item.getTag(R.id.item_icon);
itemImage.setImageResource(currentItem.getIconID());
// Item Name:
TextView itemText = (TextView)item.getTag(R.id.item_title);
itemText.setText(currentItem.getItemName());
return item;
}
这是所显示内容的屏幕截图,您可以看到缺少第五个元素:
最佳答案
编辑:事实证明,用父 View 膨胀 View 会导致这个问题。 当前的解决方案(解决方法)是通过空父级来膨胀它。
所以,这个:
item = inflater.inflate(R.layout.item_view, viewGroup, false);
应该是:
item = inflater.inflate(R.layout.item_view, null);
是的,这是一个错误,我会在以后尝试修复它。感谢您找到它!
它适用于 10 多个项目,因为当您滚动时, View 会被适配器回收,因此父项已得到适当的测量。
之前的回答:
我刚刚重新编译了示例的最后一个版本,该版本包含奇数个项目,并且在单独的行上显示了最后一个项目。
也许列/项目数的特定配置存在错误,但原则上它是有效的。
关于java - ListAsGridBaseAdapter 仅在项目数为偶数时显示网格项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24987801/