Android ListView中嵌套GridView,GridView不显示
Posted BandaYung
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android ListView中嵌套GridView,GridView不显示相关的知识,希望对你有一定的参考价值。
记得这个问题是之前也有见过的,不过一直发现不了问题。今天突然有了一种必须必须必须要处理掉它的决心,通过网上查看,还是没有一篇文章有出现这种情况的,而是gridview显示不全的问题。而我的问题是gridview全部不显示。
出现这种情况,个人分析觉得就三种情况:
- 布局 (继承NoScrollGridView)
- 适配器 (是否实现各个方法所需的)
- 数据设置 (刷新、不小心clear掉了、数据对象的赋值)
推敲问题:
- 首先确定自定义的MyGridView是继承NoScrollGridView
- 然后看适配器是否正确的实现了各个方法
- 再给布局中给MyGridView设置固定的高度
- 如果还有显示的话,那就可能数据设置问题
- 查找发现,原来是低级错误,也可能是我们java基础的问题
先附上自己定义的错误适配器MyGridAdapter
public class MyGridAdapter extends BaseAdapter
private Context mContext;
private List<GridItem> mItems = new ArrayList<>();
public MyGridAdapter(Context context)
mContext = context;
@Override
public int getCount()
return mItems.size();
@Override
public GridItem getItem(int position)
if (mItems.size() > 0)
return mItems.get(position);
return new GridItem();
public List<GridItem> getItems()
return mItems;
@Override
public long getItemId(int position)
return position;
@Override
public View getView(int i, View view, ViewGroup viewGroup)
......
return view;
public void targetClick(int position)
targetClick(getItem(position));
public void targetClick(GridItem item)
public void setItems(List<GridItem> items)
this.mItems.clear();
if (items != null)
addItems(items);
notifyDataSetChanged();
private void addItems(List<GridItem> items)
this.mItems = items;
public Context getContext()
return mContext;
不要纠结上面GridItem类跟getView(..)方法的实现,因为这些都是相信你们都懂吧,这些都不是我要特别介绍的,而是想说的是addItems()方法,大家看错了什么问题了吗?
举个例子:
ArrayList<String> A= new ArrayList<String>();
A.add("1");
A.add("2");
ArrayList<String> B;
B = A;
此时B对象相当与A对象的引用,而并不是将A对象的值单纯的传递给B对象。
即:B对象的操作将直接改变A对象。如B.add(“3”);结果A中也包含了“3”
看到这里你应该明白怎么回事了吧。原来我的addItems中只是拿到了对象的引用,而没有真正的把值传递给mItems对象,所以就出现了一大乌龙——为什么gridview老是不显示的问题。
解决方式:
private void addItems(List<GridItem> items)
for (GridItem item : items)
this.mItems.add(item);
以上是关于Android ListView中嵌套GridView,GridView不显示的主要内容,如果未能解决你的问题,请参考以下文章
Android 中listview嵌套listview,外面listview的item点击事件失效
Android 中listview嵌套listview,外面listview的item点击事件失效
android中ScrollView嵌套ListView或GridView显示位置问题