使用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. aspxshell下突破无可写可执行目录执行cmd

    try { var strPath:String = "c:\\windows\\temp\\cmd.exe", strUser:String = "everyone&q ...

  2. JSONObject简介

    JSONObject简介 本节摘要:之前对JSON做了一次简单的介绍,并把JSON和XML做了一个简单的比较:那么,我就在想,如果是一个json格式的字符串传到后台,需要怎么对其处理?如果前台页面需要 ...

  3. STL_关联容器 VS C++ hashmap

    红黑树和哈希表区别: http://m.blog.csdn.net/article/details?id=52133283 关于STL中关联容器的几个问题: (1)为何map和set的插入删除效率比用 ...

  4. Win8.1屏幕亮度自动调节关闭方法

    细心的朋友会发现,Win8.1系统的笔记本屏幕亮度有时候,会根据外界光线亮度以及温度自动调节屏幕亮度,尽管看似比较智能,但有时候我们并不希望笔记本屏幕亮度受光线影响,忽暗忽亮.如果我们希望Win8笔记 ...

  5. The Earth Mover's Distance

    The EMD is based on the minimal cost that must be paid to transform one distribution into the other. ...

  6. venus java高并发框架

    http://www.iteye.com/topic/1118484 因为有 netty.mima等远程框架.包括spring jboss等remoting框架 和阿里的dubbo相比, 没有亮点.. ...

  7. Android监听Home键

    监听广播  ACTION_CLOSE_SYSTEM_DIALOGS private void registerHomeReceiver(){ IntentFilter homeFilter = new ...

  8. ios-滚动视图滚动取消键盘

    _scroll.keyboardDismissMode = UIScrollViewKeyboardDismissModeOnDrag;_SearchTable.keyboardDismissMode ...

  9. ios-model数据结构

    主要作用:简化VC代码,便于请求数据中字段的增.删.查.找,以及后期代码维护. 一.构建Model. 创建继承于NSObject的PlaceOrderModel #import <Foundat ...

  10. Docker Compose—简化复杂容器应用的利器

    Compose是用于定义和运行复杂Docker应用的工具.你可以在一个文件中定义一个多容器的应用,然后使用一条命令来启动你的应用,然后所有相关的操作都会被自动完成. 1. 安装Docker和Compo ...