使用ViewHolder来刷新某项数据,而不用每次都全部刷新数据。

继承BaseAdapter,新建ViewHolder类。

  1. public class TestListAdapter extends BaseAdapter {
  2. private Context mContext;
  3. private List<String> strList;
  4. public TestListAdapter(Context context, List<String> list) {
  5. super();
  6. this.mContext = context;
  7. this.strList = list;
  8. }
  9. @Override
  10. public int getCount() {
  11. // TODO Auto-generated method stub
  12. return strList.size();
  13. }
  14. @Override
  15. public Object getItem(int position) {
  16. // TODO Auto-generated method stub
  17. return position;
  18. }
  19. @Override
  20. public long getItemId(int position) {
  21. // TODO Auto-generated method stub
  22. return position;
  23. }
  24. @Override
  25. public View getView(int position, View convertView, ViewGroup parent) {
  26. // TODO Auto-generated method stub
  27. ViewHolder holder = null;
  28. if (null == convertView) {
  29. convertView = LayoutInflater.from(mContext).inflate(R.layout.line, null);
  30. holder = new ViewHolder();
  31. holder.iDText = (TextView) convertView.findViewById(R.id.textView_id);
  32. holder.strText = (TextView) convertView.findViewById(R.id.textView_str);
  33. convertView.setTag(holder);
  34. } else {
  35. holder = (ViewHolder) convertView.getTag();
  36. }
  37. holder.iDText.setText(position + "");
  38. String str = strList.get(position);
  39. holder.strText.setText(str);
  40. return convertView;
  41. }
  42. private static class ViewHolder {
  43. private TextView iDText;
  44. private TextView strText;
  45. }
  46. public void updataView(int posi, ListView listView) {
  47. int visibleFirstPosi = listView.getFirstVisiblePosition();
  48. int visibleLastPosi = listView.getLastVisiblePosition();
  49. if (posi >= visibleFirstPosi && posi <= visibleLastPosi) {
  50. View view = listView.getChildAt(posi - visibleFirstPosi);
  51. ViewHolder holder = (ViewHolder) view.getTag();
  52. String txt = holder.strText.getText().toString();
  53. txt = txt + "++;";
  54. holder.strText.setText(txt);
  55. strList.set(posi, txt);
  56. } else {
  57. String txt = strList.get(posi);
  58. txt = txt + "++;";
  59. strList.set(posi, txt);
  60. }
  61. }
  62. }

在Activity中,调用updateView()方法,刷新数据。

  1. public class MainActivity extends Activity {
  2. private MainActivity mContext;
  3. private EditText idEdit;
  4. private TextView textView;
  5. private List<String> strList = new ArrayList<String>();
  6. private ListView listView;
  7. private TestListAdapter ListAdapter;
  8. @Override
  9. protected void onCreate(Bundle savedInstanceState) {
  10. super.onCreate(savedInstanceState);
  11. setContentView(R.layout.activity_main);
  12. mContext = this;
  13. for (int i = 0; i < 100; i++) {
  14. strList.add("test data");
  15. }
  16. idEdit = (EditText) findViewById(R.id.edittext_id);
  17. textView = (TextView) findViewById(R.id.textview_modify);
  18. listView = (ListView) findViewById(R.id.listview);
  19. ListAdapter = new TestListAdapter(mContext, strList);
  20. listView.setAdapter(ListAdapter);
  21. //动态刷新
  22. textView.setOnClickListener(new OnClickListener() {
  23. @Override
  24. public void onClick(View v) {
  25. // TODO Auto-generated method stub
  26. String idStr = idEdit.getText().toString();
  27. int idInt = Integer.parseInt(idStr);
  28. ListAdapter.updataView(idInt, listView);//动态修改
  29. }
  30. });
  31. }
  32. }

给出布局文件:

  1. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  2. xmlns:tools="http://schemas.android.com/tools"
  3. android:layout_width="match_parent"
  4. android:layout_height="match_parent"
  5. android:background="#FFFFFF"
  6. android:orientation="vertical" >
  7. <LinearLayout
  8. android:layout_width="match_parent"
  9. android:layout_height="40dp"
  10. android:orientation="horizontal" >
  11. <EditText
  12. android:id="@+id/edittext_id"
  13. android:layout_width="200dp"
  14. android:layout_height="wrap_content"
  15. android:hint="put modify id" />
  16. <TextView
  17. android:id="@+id/textview_modify"
  18. android:layout_width="wrap_content"
  19. android:layout_height="wrap_content"
  20. android:text="动态修改"
  21. android:textColor="#123456" />
  22. </LinearLayout>
  23. <ListView
  24. android:id="@+id/listview"
  25. android:layout_width="match_parent"
  26. android:layout_height="wrap_content" >
  27. </ListView>
  28. </LinearLayout>

listivew 动态刷新单个item的更多相关文章

  1. memcached 最大能存储多大的单个 item?

    1MB.如果你的数据大于 1MB,可以考虑在客户端压缩或拆分到多个 key 中. 为什么单个 item 的大小被限制在 1M byte 之内? 简单的回答:因为内存分配器的算法就是这样的. 详细的回答 ...

  2. ListView只更新某个item

    方案1:针对需要更新的item调用public View getView(int position, View convertView, ViewGroup parent)即可.如: public c ...

  3. memcache 存储单个KEY,数据量过大的时候性能慢!以及简单的memcache不适合用到的场景

    今天有人问到我:memcache存储大数据量,10K,100K,1M的时候,效果怎么样??我回答:不好,效果非常慢.对方问:为什么啊??我回答不上来...于是就找了点资料. memcached使用需要 ...

  4. 局部更新listview的问题(只更新某个item)

    转:http://blog.csdn.net/wu_shu_jun/article/details/7794576 public void updateView(int itemIndex) { // ...

  5. 【飞天奔月出品】memcached四大注意事项(key长度,空格限制,最大item)

    1.   key值最大长度? memcached的key的最大长度是250个字符. 注意250是memcached服务器端内部的限制(可以修改) 如果您使用的客户端支持"key的前缀&quo ...

  6. Android开发之PullToRefresh的Click点击事件的监听实现长按删除Item

    本文为原创博客.出自http://blog.csdn.net/minimicall 到今天为止,搜芽的卖家版本号应该来说已经基本完毕.攻坚克难的一路过来.速度也控制的比較好. 项目过程进度 从任务分配 ...

  7. Android进阶笔记16:ListView篇之ListView刷新显示(全局 和 局部)

    一.ListView内容变化后,动态刷新的步骤(全局刷新): (1)更新适配器Adapter数据源:(不要使用匿名内部类) (2)调用适配器Adapter的刷新方法notifyDataSetChang ...

  8. Android进阶笔记13:ListView篇之ListView刷新显示(全局 和 局部)

    一.ListView内容变化后,动态刷新的步骤(全局刷新): (1)更新适配器Adapter数据源:(不要使用匿名内部类) (2)调用适配器Adapter的刷新方法notifyDataSetChang ...

  9. 走进缓存的世界(三) - Memcache

    系列文章 走进缓存的世界(一) - 开篇 走进缓存的世界(二) - 缓存设计 走进缓存的世界(三) - Memcache 简介 Memcache是一个高性能的分布式内存对象缓存系统,用于动态Web应用 ...

随机推荐

  1. jQuery获取cookie

    之前一直以为获取cookie的方法封装在了jQuery包中...没想到还得单独下jquery.cookie.js插件,不太好找,备份一份: /*! * jQuery Cookie Plugin v1. ...

  2. hdu Virtual Friends

    这题是一个很简单额并查集的题目,首先第一步是要用map将字符串映射为整型,这样方便后面的处理,然后就是用一个rank[]数组来记录每个朋友圈的人数.之后就是简单的并查集操作了. 这里给出一组测试案例: ...

  3. hdu Hike on a Graph

    此题是道bfs搜索的题目.bfs的精髓就是找到下一步的所有可能然后存储起来,有点暴力的感觉,这题就是每步中 所有的可能都入队,然后一一 判断.这道题的题意是 : 给你一幅完全图,再给你三个盘,目的是把 ...

  4. cookie&&session再理解笔记

    就拿php来说,两个php页面之间不拿get,post传递变量的话,数据是不能共享的.访问完1.php页面该页面的变量就被销毁了.所以就拿学校食堂来说,拿现金买饭的话你交完钱后,他给你个票以便确认你, ...

  5. Linux磁盘及文件系统管理

    在LINUX中我们知道一个很重要的概念,那就是"一切皆文件",这里的一切表示所有在LINUX系统的对象,自然也包括了LINUX中的硬盘设备.在LINUX中所有设备都被抽象成一个文件 ...

  6. 有效的PhoneGap CSS: WebKit Tap Highlight Color

    原文链接:文章1:http://phonegap-tips.com/articles/essential-phonegap-css-webkit-tap-highlight-color.html(此文 ...

  7. Final-阶段站立会议2

    组名:天天向上 组长:王森 组员:张政.张金生.林莉.胡丽娜 代码地址:HTTPS:https://git.coding.net/jx8zjs/llk.git SSH:git@git.coding.n ...

  8. Java内存泄露及性能调优实例

    内存泄漏及解决方法 1)系统崩溃前的一些现象 每次垃圾回收的时间越来越长,由之前的10ms延长到50ms左右,FullGC的时间也有之前的0.5s延长到4.5s:FullGC的次数越来越多,最频繁时隔 ...

  9. XE系列资源文件的奇怪问题

    这是一个关于资源文件的故事.......-_- 今天写一个功能测试Demo, 为了省事直接在工程文件里Resources And Images里添加了几个图片, 类型都是默认的RCDATA 然后直接就 ...

  10. 【后台测试】手把手教你jmeter压测

    ◆版权声明:本文出自胖喵~的博客,转载必须注明出处.  转载请注明出处:http://www.cnblogs.com/by-dream/p/5611555.html 我知道我迟早是要踏上了后台测试之路 ...