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应用 ...
随机推荐
- Logistic Regression Vs Decision Trees Vs SVM: Part I
Classification is one of the major problems that we solve while working on standard business problem ...
- ThinkPHP的URL优化
在刚刚安装好tp框架时,我们的路径一般是这样的: http://localhost/index.php/Home/Index/index?name=cly 我们可以通过下面一步步的步骤来优化这个路径 ...
- 关于html页面布局
之前做的一个网站,结果今天这几天测试发现在19寸屏幕和手机屏幕上页面布局全乱了,今天刚刚改好,发现还是自己经验不足,做个小总结. 一.div布局要固定宽高 当div不设计长宽高而是自动由内部控件”撑“ ...
- c# 基础部分 (基本数据类型-- 表达式)
一 基础部分 1.常用的基本数据类型 int longing(长整) shortint(短整) string(文本型) char(字符型) bool (布尔型) false true 2.常量于变量 ...
- 3G網絡容量和業務承載的壓力大大增加!
在移動通信話音業務繼續保持發展的同時,對IP和高速數據業務的支持已經成為移動通信系統演進的方向.移動數據業務是推動目前移動通信技術發展的主要動力,TD-LTE作為準4G技術,以提高數據速率和頻譜利用率 ...
- Android监听Home键
监听广播 ACTION_CLOSE_SYSTEM_DIALOGS private void registerHomeReceiver(){ IntentFilter homeFilter = new ...
- 20145224&20145238《信息安全系统设计基础》实验四
20145224陈颢文20145238荆玉茗 <信息安全系统设计基础>第四次实验报告 课程:信息安全系统设计基础 班级: 1452 姓名:荆玉茗 陈颢文 学号:20145238 20145 ...
- Laravel-5.1 ---- 将mews captcha整合到项目中!
经过摸索,终于能在laravel 5.1中应用验证码了. 因为英语渣五水平,所以几乎没搜索到什么有用的,于是考虑在github上搜索验证码包! 提示: github上的package中往往会有使用说明 ...
- oslo.messaging 1.8.0 bug fix and blueprint
1366597 由于amqp_auto_delete可配置,但是NotifierPublisher使用的是没有在配置中获取而使用的默认的False,即非auo_delete,因而在用户配置了amqp_ ...
- BUG级别(优先级、严重级)定义
一.主要分类 BUG类型标准主要分两类: Ø 依据优先级分类. Ø 依据严重程度分类. 二.主要内容 依据优先级分类标准 定义 优先级:指一个BUG相对于其他BUG对于公司的影响,解决的及时性. 分类 ...