Я использую ListAsGridBaseAdapter для отображения элементов gridview с прокручиваемым заголовком сверху. В моем представлении сетки есть 2 столбца, и когда у меня есть нечетное количество элементов (например, 1 элемент) для отображения, в представлении сетки ничего не появляется, отображается только заголовок. Элементы отображаются только в том случае, если их четное количество (например, 2 или 4 элемента).
Я пытался отладить это некоторое время и не могу понять, что в code вызывает это.
РЕДАКТИРОВАТЬ: в сетке не отображаются n-е нечетные элементы для 1, 3, 5, 7 и 9 элементов сетки. Если у вас есть 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-й элемент: