我一直在使用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;
}
以下是显示内容的屏幕截图,因为您可以看到缺少第5个元素:
答案 0 :(得分:2)
编辑:事实证明,用父母夸大视图会导致此问题。 当前的解决方案(解决方法)是通过空父级来扩充它。
所以,这个:
item = inflater.inflate(R.layout.item_view, viewGroup, false);
应该是:
item = inflater.inflate(R.layout.item_view, null);
是的,这是一个错误,我将来会尝试修复它。谢谢你找到它!
它适用于10个以上的项目,因为滚动时,视图会被适配器回收,因此父项已经过适当的测量。
上一个回答:
我刚刚重新编译了样本的最后一个版本,它有一个奇数个项目,它显示了一个单独行上的最后一个项目。
根据列/项的数量,可能存在特定配置的错误,但原则上它可以正常工作。