Android ListView动态刷新某项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 = ; i < ; 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>
Android ListView动态刷新某项Item的更多相关文章
- android中设置ListView的选中的Item的背景颜色
ListView中没有默认的选择颜色,只有选择Item后的焦点颜色,鼠标点击时Item有颜色,放开鼠标后颜色也就没有了,要实现放开鼠标后选择项的背景还是有颜色的. 1.配置main.xml <? ...
- [Android Pro] listView和GridView的item设置的高度和宽度不起作用
referece to : http://blog.csdn.net/beibeixiao/article/details/9032569 1. 在Android开发中会发现,有时listVi ...
- Android 使用NineOldAndroids实现绚丽的ListView左右滑动删除Item效果
本文出自xiaanming的博客(http://blog.csdn.net/xiaanming/article/details/18311877) 今天还是给大家带来自定义控件的编写,自定义一个Lis ...
- 【转】Android 使用Scroller实现绚丽的ListView左右滑动删除Item效果
原文网址:http://blog.csdn.net/xiaanming/article/details/17539199 转帖请注明本文出自xiaanming的博客(http://blog.csdn. ...
- [转]Android 使用Scroller实现绚丽的ListView左右滑动删除Item效果
转帖请注明本文出自xiaanming的博客(http://blog.csdn.net/xiaanming/article/details/17539199),请尊重他人的辛勤劳动成果,谢谢! 我在上一 ...
- Android ListView 之 SimpleAdapter 二 (包含 item 中按钮监听)
1 MainActivity.java package com.myadapter; import java.util.ArrayList; import java.util.HashMap; ...
- 【转】Android ListView加载不同的item布局
原创教程,转载请保留出处:http://www.eoeandroid.com/thread-72369-1-1.html 最近有需求需要在listView中载入不同的listItem布局,开始 ...
- [问题]Android listView item edittext 不能调用软键盘输入法
android listview item edittext not softkeyboard edittext可以获取焦点, 可以触发事件, 但是就是不能调用输入法, 不知道为什么? 难道不能在i ...
- Android ListView的item背景色设置以及item点击无响应等相关问题
Android ListView的item背景色设置以及item点击无响应等相关问题 在Android开发中,listview控件是非常常用的控件,在大多数情况下,大家都会改掉listview的ite ...
随机推荐
- 解决confluence的乱码问题
使用confluence时发现一些含有中文的页面中,中文都变成了问号. 继续搜索解决方案,发现时数据库中数据的格式不对, 在mysql中输入以下命令: mysql> show variabl ...
- Linux 命令修改系统时间
修改linux的系统时间使用date指令,date命令的功能是显示和设置系统日期和时间. 输入date 查看目前系统时间. 修改时间需要 date -功能字符 修改内容 命令中各选项的含义分别为:-d ...
- Python爬虫开发【第1篇】【HTTP与HTTPS请求与响应】
一.HTTP.HTTPS介绍 HTTP协议(超文本传输协议):一种发布.接收HTML页面的方法 HTTPS协议:简单讲是HTTP安全版,在HTTP下加入SSL层 SSL(安全套接层),用于WEB的安全 ...
- Python爬虫【第3篇】【多线程】
一.多线程 Python标准库提供2个模块,thread是低级模块,threading是高级模块 1.threading模块创建多线程 方式1:把1个函数传入并创建Thread实例,然后调用start ...
- 复合页( Compound Page )
复合页(Compound Page)就是将物理上连续的两个或多个页看成一个 独立的大页,它能够用来创建hugetlbfs中使用的大页(hugepage). 也能够用来创建透明大页( ...
- [办公应用]word 2007:全屏快捷键,让复制图片保持原样大小(office 全屏快捷键)
最近同事咨询这两个问题: 1.word 2007内是否有全屏显示的快捷键,这样投影时,就可以快速切换到全屏. 2.从ppt或者excel复制一张较大的图片,word 2007 会默认让复制的图片缩小, ...
- easyUI里的checkbox编辑
数据源如果有布尔值,那么在UI里,最合适的控件应该就是checkbox了. easyUI的datagrid中,列的checkbox酱紫设置: {field:'status',title:'Status ...
- [DevExpress]DevExpress的安装与使用
一.下载安装文件 依据自己的须要选择不同的版本号.下面为15.1 安装时选择自己须要的模块进行安装,之后进行激活,购买授权或者"其它方式". 二.安装完 在VSIDE工具栏会添加下 ...
- luogu1155 双栈排序
题目大意 运用两个栈的push和pop操作使得一个序列单调递增且操作字典序最小.$n\leq 1000$. 题解 本题我们要尝试运用“瞪眼法”,也就是推样例.我们显然要数字尽可能地推入第一个栈.那么问 ...
- 安装 matplotlib
比较推荐还是用pip来安装,用源码安装还是会比较麻烦,进入到CMD窗口下,执行python -m pip install -U pip setuptools进行升级. 接着键入python -m pi ...