listivew 动态刷新单个item
使用ViewHolder来刷新某项数据,而不用每次都全部刷新数据。
继承BaseAdapter,新建ViewHolder类。
- public class TestListAdapter extends BaseAdapter {
- private Context mContext;
- private List<String> strList;
- public TestListAdapter(Context context, List<String> list) {
- super();
- this.mContext = context;
- this.strList = list;
- }
- @Override
- public int getCount() {
- // TODO Auto-generated method stub
- return strList.size();
- }
- @Override
- public Object getItem(int position) {
- // TODO Auto-generated method stub
- return position;
- }
- @Override
- public long getItemId(int position) {
- // TODO Auto-generated method stub
- return position;
- }
- @Override
- public View getView(int position, View convertView, ViewGroup parent) {
- // TODO Auto-generated method stub
- ViewHolder holder = null;
- if (null == convertView) {
- convertView = LayoutInflater.from(mContext).inflate(R.layout.line, null);
- holder = new ViewHolder();
- holder.iDText = (TextView) convertView.findViewById(R.id.textView_id);
- holder.strText = (TextView) convertView.findViewById(R.id.textView_str);
- convertView.setTag(holder);
- } else {
- holder = (ViewHolder) convertView.getTag();
- }
- holder.iDText.setText(position + "");
- String str = strList.get(position);
- holder.strText.setText(str);
- return convertView;
- }
- private static class ViewHolder {
- private TextView iDText;
- private TextView strText;
- }
- public void updataView(int posi, ListView listView) {
- int visibleFirstPosi = listView.getFirstVisiblePosition();
- int visibleLastPosi = listView.getLastVisiblePosition();
- if (posi >= visibleFirstPosi && posi <= visibleLastPosi) {
- View view = listView.getChildAt(posi - visibleFirstPosi);
- ViewHolder holder = (ViewHolder) view.getTag();
- String txt = holder.strText.getText().toString();
- txt = txt + "++;";
- holder.strText.setText(txt);
- strList.set(posi, txt);
- } else {
- String txt = strList.get(posi);
- txt = txt + "++;";
- strList.set(posi, txt);
- }
- }
- }
在Activity中,调用updateView()方法,刷新数据。
- public class MainActivity extends Activity {
- private MainActivity mContext;
- private EditText idEdit;
- private TextView textView;
- private List<String> strList = new ArrayList<String>();
- private ListView listView;
- private TestListAdapter ListAdapter;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- mContext = this;
- for (int i = 0; i < 100; i++) {
- strList.add("test data");
- }
- idEdit = (EditText) findViewById(R.id.edittext_id);
- textView = (TextView) findViewById(R.id.textview_modify);
- listView = (ListView) findViewById(R.id.listview);
- ListAdapter = new TestListAdapter(mContext, strList);
- listView.setAdapter(ListAdapter);
- //动态刷新
- textView.setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View v) {
- // TODO Auto-generated method stub
- String idStr = idEdit.getText().toString();
- int idInt = Integer.parseInt(idStr);
- ListAdapter.updataView(idInt, listView);//动态修改
- }
- });
- }
- }
给出布局文件:
- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:tools="http://schemas.android.com/tools"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:background="#FFFFFF"
- android:orientation="vertical" >
- <LinearLayout
- android:layout_width="match_parent"
- android:layout_height="40dp"
- android:orientation="horizontal" >
- <EditText
- android:id="@+id/edittext_id"
- android:layout_width="200dp"
- android:layout_height="wrap_content"
- android:hint="put modify id" />
- <TextView
- android:id="@+id/textview_modify"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="动态修改"
- android:textColor="#123456" />
- </LinearLayout>
- <ListView
- android:id="@+id/listview"
- android:layout_width="match_parent"
- android:layout_height="wrap_content" >
- </ListView>
- </LinearLayout>
listivew 动态刷新单个item的更多相关文章
- memcached 最大能存储多大的单个 item?
1MB.如果你的数据大于 1MB,可以考虑在客户端压缩或拆分到多个 key 中. 为什么单个 item 的大小被限制在 1M byte 之内? 简单的回答:因为内存分配器的算法就是这样的. 详细的回答 ...
- ListView只更新某个item
方案1:针对需要更新的item调用public View getView(int position, View convertView, ViewGroup parent)即可.如: public c ...
- memcache 存储单个KEY,数据量过大的时候性能慢!以及简单的memcache不适合用到的场景
今天有人问到我:memcache存储大数据量,10K,100K,1M的时候,效果怎么样??我回答:不好,效果非常慢.对方问:为什么啊??我回答不上来...于是就找了点资料. memcached使用需要 ...
- 局部更新listview的问题(只更新某个item)
转:http://blog.csdn.net/wu_shu_jun/article/details/7794576 public void updateView(int itemIndex) { // ...
- 【飞天奔月出品】memcached四大注意事项(key长度,空格限制,最大item)
1. key值最大长度? memcached的key的最大长度是250个字符. 注意250是memcached服务器端内部的限制(可以修改) 如果您使用的客户端支持"key的前缀&quo ...
- Android开发之PullToRefresh的Click点击事件的监听实现长按删除Item
本文为原创博客.出自http://blog.csdn.net/minimicall 到今天为止,搜芽的卖家版本号应该来说已经基本完毕.攻坚克难的一路过来.速度也控制的比較好. 项目过程进度 从任务分配 ...
- Android进阶笔记16:ListView篇之ListView刷新显示(全局 和 局部)
一.ListView内容变化后,动态刷新的步骤(全局刷新): (1)更新适配器Adapter数据源:(不要使用匿名内部类) (2)调用适配器Adapter的刷新方法notifyDataSetChang ...
- Android进阶笔记13:ListView篇之ListView刷新显示(全局 和 局部)
一.ListView内容变化后,动态刷新的步骤(全局刷新): (1)更新适配器Adapter数据源:(不要使用匿名内部类) (2)调用适配器Adapter的刷新方法notifyDataSetChang ...
- 走进缓存的世界(三) - Memcache
系列文章 走进缓存的世界(一) - 开篇 走进缓存的世界(二) - 缓存设计 走进缓存的世界(三) - Memcache 简介 Memcache是一个高性能的分布式内存对象缓存系统,用于动态Web应用 ...
随机推荐
- CentOS 7.0下配置MariaDB数据库
刚刚配置了下CentOS 7.0版本的服务器,配置数据库时发现# mysql_secure_installation命令用不了,之后网上查了一下发现CentOS 7.0版本用MariaDB替换了mys ...
- Daily Scrum 11.3
今天开发人员的任务都还行,测试的同学要开始辛苦了. 下面是今天的Task统计:
- Ansible (一)
epel rpm -ivh http://mirrors.ustc.edu.cn/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm yum -y ins ...
- 使用JSch实现SFTP文件传输
1.JSch开发包下载 http://www.jcraft.com/jsch/ 目前最新版本为: jsch - 0.1.51 2.简单例子,列出指定目录下的文件列表 import java.util ...
- IOS第16天(1,Quartz2D基本图像绘制)
***************基本图像绘制 画线 #import "HMLineView.h" @implementation HMLineView - (id)initWithF ...
- Oracle-01033错误处理
今天电脑非常卡,强制重启后,发现oracle 11g启动不了了,提示错误: ERROR - ORA-01033 oracle initialization or shutdown in progres ...
- IE8兼容H5语义标签
//IE浏览器定义的特殊属性,通过hack方式判断IE版本来执行不同的代码,IE8以下浏览器自动创建html5语义标签,从而实现兼容<!--[if lte IE 8] <script sr ...
- 关于IOS的证书、App ID、设备、Provisioning Profile详述
首先,打开developer.apple.com ,在iOS Dev Center打开Certificates, Indentifiers & Profiles认识一下基本结构.列表就包含了开 ...
- php基础篇-二维数组排序 array_multisort
原文:php基础篇-二维数组排序 array_multisort 对2维数组或者多维数组排序是常见的问题,在php中我们有个专门的多维数组排序函数,下面简单介绍下: array_multisort(a ...
- MyBatis操作指南-搭建项目基础环境(基于XML)含log4j配置