使用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. SQL servcer 时间日期函数、数据类型转换

    1.时间日期函数 2.数据类型转换 3.习题 建立两个表,一个部门表,一个人员表.部门:部门的编号,部门的名称,部门的职责.人员:人员的编号,姓名,年龄,性别,cid所属部门

  2. 配置DNS实验一例

    1安装bind软件 2查看当前DNS服务 3修改配置文件 4测试

  3. zju(6)中断控制实验

    1.实验目的 1.学习和掌握Linux下中断驱动的写法: 二.实验内容 1.编写EduKit-IV实验箱Linux操作系统下按键key的驱动: 2.编写EduKit-IV实验箱Linux操作系统下按键 ...

  4. 深入了解ios系统机制

    1.什么叫ios?        ios一般指ios(Apple公司的移动操作系统) .        苹果iOS是由苹果公司开发的移动操作系统.苹果公司最早于2007年1月9日的Macworld大会 ...

  5. 分布式搜索ElasticSearch单机与服务器环境搭建

    从上方插件官网中下载适合的dist包,然后解压.进入bin目录,可以看到一堆sh脚本.在bin目录下创建一个test.sh: bin=/home/csonezp/Dev/elasticsearch-j ...

  6. Android课程---Oracle VM VirtualBox出现不能为虚拟机打开一个新任务

    因工作需要在Win7下增添了Win7虚拟系统,随着VirtualBox 4.326的版本更新,用户们也开始升级.一用户在升级后发现原来创建的虚拟机无法打开,提示信息为:不能为虚拟电脑win7打开一个新 ...

  7. IOS第14天(1,UITabBarController的基本的使用)

    **************HMAppDelegate.m - (BOOL)application:(UIApplication *)application didFinishLaunchingWit ...

  8. mongod 命令执行发现已经有进程在运行mongod数据库--errno:48 Address already in use for socket: 0.0.0.0:27017

    错误信息: listen(): bind() failed errno:48 Address already in use for socket: 0.0.0.0:27017 27017端口已经被占用 ...

  9. UFS

    ● UFS vs eMMC 1. UFS有分离的读写通道,可以同时进行读写操作(双向),但是eMMC在同一时刻只能读或写. 2. UFS有一个命令队列,将命令进行排序.因此,多个命令可以同时处理,从而 ...

  10. NPOI操作excel之读取excel数据

    NPOI 是 POI 项目的 .NET 版本.POI是一个开源的Java读写Excel.WORD等微软OLE2组件文档的项目.  一.下载引用 去NPOI官网http://npoi.codeplex. ...