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应用 ...
随机推荐
- aspxshell下突破无可写可执行目录执行cmd
try { var strPath:String = "c:\\windows\\temp\\cmd.exe", strUser:String = "everyone&q ...
- JSONObject简介
JSONObject简介 本节摘要:之前对JSON做了一次简单的介绍,并把JSON和XML做了一个简单的比较:那么,我就在想,如果是一个json格式的字符串传到后台,需要怎么对其处理?如果前台页面需要 ...
- STL_关联容器 VS C++ hashmap
红黑树和哈希表区别: http://m.blog.csdn.net/article/details?id=52133283 关于STL中关联容器的几个问题: (1)为何map和set的插入删除效率比用 ...
- Win8.1屏幕亮度自动调节关闭方法
细心的朋友会发现,Win8.1系统的笔记本屏幕亮度有时候,会根据外界光线亮度以及温度自动调节屏幕亮度,尽管看似比较智能,但有时候我们并不希望笔记本屏幕亮度受光线影响,忽暗忽亮.如果我们希望Win8笔记 ...
- The Earth Mover's Distance
The EMD is based on the minimal cost that must be paid to transform one distribution into the other. ...
- venus java高并发框架
http://www.iteye.com/topic/1118484 因为有 netty.mima等远程框架.包括spring jboss等remoting框架 和阿里的dubbo相比, 没有亮点.. ...
- Android监听Home键
监听广播 ACTION_CLOSE_SYSTEM_DIALOGS private void registerHomeReceiver(){ IntentFilter homeFilter = new ...
- ios-滚动视图滚动取消键盘
_scroll.keyboardDismissMode = UIScrollViewKeyboardDismissModeOnDrag;_SearchTable.keyboardDismissMode ...
- ios-model数据结构
主要作用:简化VC代码,便于请求数据中字段的增.删.查.找,以及后期代码维护. 一.构建Model. 创建继承于NSObject的PlaceOrderModel #import <Foundat ...
- Docker Compose—简化复杂容器应用的利器
Compose是用于定义和运行复杂Docker应用的工具.你可以在一个文件中定义一个多容器的应用,然后使用一条命令来启动你的应用,然后所有相关的操作都会被自动完成. 1. 安装Docker和Compo ...