首先,项目里面需要用到2个ListView View嵌套,做成朋友圈那种 可以发送9张图的那种,但是做出来,出现问题,每次发布新消息的时候,一级ListView ,与2级ListView的内容时错位的,研究了2个小时,才考虑出问题之所在,原来是ListView 的adapter 适配 复用机制。
ViewHolder mviewHolder
if (convertView == null) {
convertView = LayoutInflater.from(mContext).inflate(R.layout.friends_circle_item, null);
mviewHolder = new ViewHolder(convertView);
linewidth=Friend_circle.screenWidth - dip2px(6 + 6 + 50 + 10);
availableTextWidth = (Friend_circle.screenWidth - dip2px(6 + 6 + 50 + 10)) * 6;
convertView.setTag(mviewHolder);
}else{
mviewHolder=(ViewHolder)convertView.getTag();
}
复用机制: 就是将ListView 里面的Item 进行复用。不用每次去加载布局文件 和申明每个控件。 但是复用 会出现 图片混淆问题, 解决办法是 添加TAG 标签区别。
出现BUG的代码
MyGridAdapter girdAdpter 写成了全局 变量,之后就会出现,item里面的复用 有问题;
修改代码 可知,每天listview 都会有一个adapter,,、得到启发,所以该为局部变量。
—————————————————————————————————————————————————————————————————————————————
(1)相关资料:
目的:想实现一种效果,点击gridview或者listview某个item时,希望这个item的图片变化或者内容变化下。
(2)Android开发ListView嵌套GridView,如何更加优化
我在ListView中嵌套GridView,效果实现了,但我在ListView的getView()中是
new GridViewAdapter(``````),也就是说我每一个大的ListView的Item都有去new
一个GridView的适配器,这样对内存不好。可我想通过notifyDataSetChanged()来
改变嵌套的GridView中的数据,一直实现不了。。。求高手解答···
解决:用viewhoder,重用converview,holder中可以保存adapter等信息,不要每次都new !!!!!