ListView的Intent跳转详情页, 滑动与点击Position错乱导致数据混乱问题解决
来源:互联网 发布:cmd telnet 端口 编辑:程序博客网 时间:2024/05/29 03:25
问题描述
具体问题是这样:今天在项目中遇到了从一个ListView界面,通过点击Item中的控件(我这里做的是图片,后改为布局)跳转到详情页面,并且将部分数据传入到下一个Activity。
来个图
问题分析
百度了一下,前辈们早已遇到这样的问题,就是没有给出具体的解决办法,大体思路就是:AbListView中获取getView()和滑动操作是异步进行的,其中滑动操作在一个FlingRunnable的支线程中运行,所以这就导致了在ListView在滑动时可能已经滑动到了第十行,但可能第二行的数据这时就被直接使用了,这就是导致数据加载错乱的根本原因。
问题解决
看了前辈们的指导还是无从下手,怎样能让活动的Position和getView的Position同步呢?我选择不管它!问题归根到底就是convertView复用的问题,不仅复用了布局还顺便复用了数据。
第一步:在convertView == null修改如下:
if (convertView == null) {convertView = mInflater.inflate(R.layout.item_produces, null);//填充布局(只复用ChildView的布局就好了!)convertView.setTag(holder);}else { holder = (ViewHolder) convertView.getTag(); }
整体可以仿效下面这个样子:只复用布局,其他的随用随取。
第二步
填充数据即可。
Intent跳转数据在ListView展开详情的用法
1,使用Bundle存储要传递的数据,推荐Bundle因为什么数据它都能传递。
Bundle b = new Bundle();b.putInt("position", (Integer)position);b.putInt("img", (Integer) mData.get(position) .get("img"));b.putString("name",(String) mData.get(position).get("info"));
2,开启Activity,将数据通过Intent传递
Intent info = new Intent(getActivity(), xxxActivity.class);info.putExtras(b);startActivity(info);
3,xxxActivity接收数据并且赋值
“`
Bundle b = getIntent().getExtras();//得到传过来的数据
String name = b.getString(“name”);
int ing = b.getInt(“img”);
tv_pro_name.setText(name);//这里赋值
总结
关于ListView的数据加载错乱问题,通常都是有图复用导致的,复用的好处不言而喻,但是有时候我们要对复用进行处理,把敏感的地方,例如数据,就要考虑选择性的复用了。
0 0
- ListView的Intent跳转详情页, 滑动与点击Position错乱导致数据混乱问题解决
- listview滑动数据错乱
- ListView中开启线程查询更新数据导致的ViewHolder错乱问题解决
- android listview 混乱 加入checkbox 点击滚动错乱 混乱
- Android ListView数据错乱问题解决
- ListView有CheckBox,滑动混乱问题解决
- listview,gridview 邪恶的wrap_content高度属性导致数据错乱
- Listview滑动过程中item出现数据错乱的解决方法
- 避免 ListView 的 控件重用机制 导致视图/数据混乱
- Android ListView在有checkbox的情况下上下滑动选中状态错误以及position错乱
- ListView Item点击事件跳转详情界面
- ListView点击子条目跳转到详情
- listview中使用checkbox滑动或者加载更多数据错乱问题解决方案
- ListView复用机制导致数据错乱
- ListVIew复用导致数据错乱
- ListView滑动时CheckBox出现数据错乱
- Android中listview的item布局中button点击事件position混乱解决
- 有关notifyItemRemoved(position)方法导致界面position错乱的解决办法
- HDU 5416 CRB and Tree (树形DP)
- Evaluating Simple C Expressions
- JSTL标准标签库详解
- HDU 5410 CRB and His Birthday(DP)
- Android NDK编译常见错误及解决方案
- ListView的Intent跳转详情页, 滑动与点击Position错乱导致数据混乱问题解决
- poj 2602 大数相加(字符串输出)
- MAC下NDK环境搭建及hello world程序
- float是什么?浮动在CSS中的作用
- Java-同步
- js中SetInterval与setTimeout用法
- 如何长久维持远距离恋情?
- hdu2688 Rotate(树状数组)
- 黑马程序员——异常&IO、其他流&编码表、Properties