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应用 ...
随机推荐
- Web前端代码页面布局总结
一. html (1)编码:所有编码均采用xhtml,标签必须闭合,属性值用双引号包括,编码统一为utf-8. (2)语义化:语义化html,正确使用标签. (3)文件命名:命名以中文命名,依实际模 ...
- 前端技术-PS切图
页面制作部分之PS切图 <--本标签下,通过页面制作.页面架构.javascript程序设计.DOM编程艺术.产品前端架构五部分来分享总结笔记,总结笔记会陆续分享--> 网页设计在技术层面 ...
- jquery回车执行某个事件
这里用到的是在查询框中输入数据后直接回车直接查询. //回车执行查询事件(执行class='btn-query'的单击事件) $(document).keydown(function (event) ...
- 2016HUAS暑假集训训练2 F - A Simple Problem with Integers
Description 给出了一个序列,你需要处理如下两种询问. "C a b c"表示给[a, b]区间中的值全部增加c (-10000 ≤ c ≤ 10000). " ...
- java读取属性配置文件工具类
import java.io.IOException; import java.io.InputStream; import java.util.Properties; /** * * 类: ProU ...
- ready是先执行的,load后执行,DOM文档的加载步骤
在jq中在文档载入完毕后有这几种方式去执行指定函数: $(document).ready(function() { // ...代码... }); //document ready 简写 $(func ...
- 利用session完成用户登陆
package cn.itcast.cookie; import java.io.IOException; import java.io.PrintWriter; import java.util.L ...
- HDU 5919 Sequence II(主席树+逆序思想)
Sequence II Time Limit: 9000/4500 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others) To ...
- Android中Service(服务)详解
http://blog.csdn.net/ryantang03/article/details/7770939 Android中Service(服务)详解 标签: serviceandroidappl ...
- openfire及xmpp简单介绍
一.oprenfire 1.openfire是采用Java开发,开源的实时协作(RTC)服务器基于XMPP(Jabber)协议.可以使用它轻易的构建高效率的即时通信服务器. 2.Openfire安装和 ...