修改ListView单个Item
来源:互联网 发布:什么是审计作业软件 编辑:程序博客网 时间:2024/05/16 05:47
问题:我们都知道刷新ListView,一般是通过Adapter的notifyDataSetChanged():通过集合的改动去刷新整个ListView ,如果ListView数据量庞大,当我们更改某一个数据的时候就会消耗加载内存!
所以下列出ListView 只更新某一个或者几个的Item数据的情况处理;
方法一:常用作点击处理,也是最多处理的情况!
首先ListView的Item点击事件中
mListView.setOnItemClickListener(new OnItemClickListener() {@Overridepublic void onItemClick(AdapterView<?> parent, View view,int position, long id) {// TODO Auto-generated method stub}});上面方法中的参数中 view则是我们点击某一个Item的 这个单个tem的view;
例如 ListView 加载 100个TextView 我们点击 第n个,这个view 就是 第n 个的TextView;
得知这个参数我们就不难处理上述问题了;
通过自己定义一个方法,当Item每次点击时候调用此方法,
mListView.setOnItemClickListener(new OnItemClickListener() {@Overridepublic void onItemClick(AdapterView<?> parent, View view,int position, long id) {// TODO Auto-generated method stubitemChange(view); //每次点击都调用此方法}});private void itemChange(View view){TextView txView = (TextView) view;//这里强转必须是咱自己知道的明确的是点击的是TextViewtxView.setText("更改过");}
方法二:接收更新Item的消息,来更新Item;适用范围更加广:
注意:在ListView中,使用getChildAt(index)的取值(返回一个View),只能是当前可见区域(列表可滚动)的子项!
即取值范围在 >= ListView.getFirstVisiblePosition() && <= ListView.getLastVisiblePosition();
1)所以如果想获取前部的将会出现返回Null值空指针问题;
2)getChildCount跟getCount获取的值将会不一样(数量多时);
3 )如果使用了getChildAt(index).findViewById(...)设置值的话,滚动列表时值就会改变了。 (错误的Index修改 的是屏幕当前的第几个View)
正确使用!如下
需要使用getFirstVisiblePosition()获得第一个可见的位置,再用当前的position-它,再用getChildAt取值!即getChildAt(position - ListView。getFirstVisiblePosition()).findViewById(...)去设置值
2.如果想更新某一行数据,需要配合ListView的滚动状态使用,一般不滚动时才加载更新数据 (滚动时候不容易判定getchildAt的view),监听滚动结束时候更新单个Item;
核心代码 如下;
public void updateView(int itemIndex) { //得到第一个可显示控件的位置, int visiblePosition = mListView.getFirstVisiblePosition(); //只有当要更新的view在可见的位置时才更新,不可见时,跳过不更新 if (itemIndex - visiblePosition >= 0) { //得到要更新的item的view View view = mListView.getChildAt(itemIndex - visiblePosition); //必须减去第一个可见的position,得到当前屏幕可见的view //从view中取得holder ViewHolder holder = (ViewHolder) view.getTag(); //得到holder 就可以去更改 此holder的控件值了}
- 修改ListView单个Item
- ListView刷新单个item
- listview单个刷新item
- listView刷新单个Item
- ListView更新单个item
- ListView刷新单个Item
- listView 更新单个item
- ListView 单个Item 更新
- 删除listview列表里面的单个item
- ListView点击单个Item失效问题解决办法
- listview和recycleview的刷新单个item
- 在listView里,只能选中单个item
- android listview单个item刷新某个控件
- ListView GridView 自定义ViewGroup的单个item 刷新 和 单个item中的局部元素刷新
- ListView修改item中EditText
- ListView的Item上有Button按钮,点击执行单个Item删除动画
- ListView中单个item的跑马灯效果;及所有item实现跑马灯
- android 修改listview item view 的方法
- 移动WEB开发 总结笔记
- 编码相关
- 纯前端实现图片上传预览(filereader )
- DELL Power Edge 1950 系统硬件用户手册
- jQuery 实现列表中的数字加减框&JSON化数据
- 修改ListView单个Item
- Nginx、LVS及HAProxy负载均衡软件的优缺点详解
- PL/SQL开发中动态SQL的使用方法
- 读《C专家编程》笔记-关于内存泄漏
- Windows常用命令
- 14.2.6.1 Role of the .frm File for InnoDB Tables
- hdu1754解题报告
- Kibana User Guide [4.2] » Visualize » Markdown Widget
- 使用JavaMail接收邮件的示例