使用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的更多相关文章

  1. android中设置ListView的选中的Item的背景颜色

    ListView中没有默认的选择颜色,只有选择Item后的焦点颜色,鼠标点击时Item有颜色,放开鼠标后颜色也就没有了,要实现放开鼠标后选择项的背景还是有颜色的. 1.配置main.xml <? ...

  2. [Android Pro] listView和GridView的item设置的高度和宽度不起作用

    referece to : http://blog.csdn.net/beibeixiao/article/details/9032569 1.     在Android开发中会发现,有时listVi ...

  3. Android 使用NineOldAndroids实现绚丽的ListView左右滑动删除Item效果

    本文出自xiaanming的博客(http://blog.csdn.net/xiaanming/article/details/18311877) 今天还是给大家带来自定义控件的编写,自定义一个Lis ...

  4. 【转】Android 使用Scroller实现绚丽的ListView左右滑动删除Item效果

    原文网址:http://blog.csdn.net/xiaanming/article/details/17539199 转帖请注明本文出自xiaanming的博客(http://blog.csdn. ...

  5. [转]Android 使用Scroller实现绚丽的ListView左右滑动删除Item效果

    转帖请注明本文出自xiaanming的博客(http://blog.csdn.net/xiaanming/article/details/17539199),请尊重他人的辛勤劳动成果,谢谢! 我在上一 ...

  6. Android ListView 之 SimpleAdapter 二 (包含 item 中按钮监听)

    1    MainActivity.java package com.myadapter; import java.util.ArrayList; import java.util.HashMap; ...

  7. 【转】Android ListView加载不同的item布局

    原创教程,转载请保留出处:http://www.eoeandroid.com/thread-72369-1-1.html     最近有需求需要在listView中载入不同的listItem布局,开始 ...

  8. [问题]Android listView item edittext 不能调用软键盘输入法

    android listview item edittext not  softkeyboard edittext可以获取焦点, 可以触发事件, 但是就是不能调用输入法, 不知道为什么? 难道不能在i ...

  9. Android ListView的item背景色设置以及item点击无响应等相关问题

    Android ListView的item背景色设置以及item点击无响应等相关问题 在Android开发中,listview控件是非常常用的控件,在大多数情况下,大家都会改掉listview的ite ...

随机推荐

  1. 解决confluence的乱码问题

    使用confluence时发现一些含有中文的页面中,中文都变成了问号. 继续搜索解决方案,发现时数据库中数据的格式不对, 在mysql中输入以下命令:   mysql> show variabl ...

  2. Linux 命令修改系统时间

    修改linux的系统时间使用date指令,date命令的功能是显示和设置系统日期和时间. 输入date 查看目前系统时间. 修改时间需要 date -功能字符 修改内容 命令中各选项的含义分别为:-d ...

  3. Python爬虫开发【第1篇】【HTTP与HTTPS请求与响应】

    一.HTTP.HTTPS介绍 HTTP协议(超文本传输协议):一种发布.接收HTML页面的方法 HTTPS协议:简单讲是HTTP安全版,在HTTP下加入SSL层 SSL(安全套接层),用于WEB的安全 ...

  4. Python爬虫【第3篇】【多线程】

    一.多线程 Python标准库提供2个模块,thread是低级模块,threading是高级模块 1.threading模块创建多线程 方式1:把1个函数传入并创建Thread实例,然后调用start ...

  5. 复合页( Compound Page )

    复合页(Compound Page)就是将物理上连续的两个或多个页看成一个      独立的大页,它能够用来创建hugetlbfs中使用的大页(hugepage).      也能够用来创建透明大页( ...

  6. [办公应用]word 2007:全屏快捷键,让复制图片保持原样大小(office 全屏快捷键)

    最近同事咨询这两个问题: 1.word 2007内是否有全屏显示的快捷键,这样投影时,就可以快速切换到全屏. 2.从ppt或者excel复制一张较大的图片,word 2007 会默认让复制的图片缩小, ...

  7. easyUI里的checkbox编辑

    数据源如果有布尔值,那么在UI里,最合适的控件应该就是checkbox了. easyUI的datagrid中,列的checkbox酱紫设置: {field:'status',title:'Status ...

  8. [DevExpress]DevExpress的安装与使用

    一.下载安装文件 依据自己的须要选择不同的版本号.下面为15.1 安装时选择自己须要的模块进行安装,之后进行激活,购买授权或者"其它方式". 二.安装完 在VSIDE工具栏会添加下 ...

  9. luogu1155 双栈排序

    题目大意 运用两个栈的push和pop操作使得一个序列单调递增且操作字典序最小.$n\leq 1000$. 题解 本题我们要尝试运用“瞪眼法”,也就是推样例.我们显然要数字尽可能地推入第一个栈.那么问 ...

  10. 安装 matplotlib

    比较推荐还是用pip来安装,用源码安装还是会比较麻烦,进入到CMD窗口下,执行python -m pip install -U pip setuptools进行升级. 接着键入python -m pi ...