Android 动态刷新listview中的数据
之前一直困扰listview刷新后位置的问题,现在才明白,原来不能重新设置listview的adapter,而应该用notifyDataSetChanged()来刷新,这样位置就不会置顶。
下面做了一个测试的例子,点击最后一条记录,会增加一条新的记录,
代码如下:
1.TestAdapter
package com.TestAdapter;import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map;import android.app.Activity; import android.content.Context; import android.os.Bundle; import android.view.View; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.AbsListView.OnScrollListener; import android.widget.AdapterView.OnItemClickListener; import android.widget.AdapterView.OnItemSelectedListener; import android.widget.AbsListView; import android.widget.ImageView; import android.widget.ListView; import android.widget.SimpleAdapter; import android.widget.TextView; import android.widget.Toast;public class TestAdapter extends Activity {/** Called when the activity is first created. */private int[] images ;private ListView listview;private MyAdapter adapter;List<Map<String,Integer>> al;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);images = new int[]{android.R.drawable.ic_btn_speak_now,android.R.drawable.alert_light_frame,android.R.drawable.arrow_down_float,android.R.drawable.arrow_up_float,android.R.drawable.btn_star_big_off,android.R.drawable.btn_star_big_on,android.R.drawable.button_onoff_indicator_off,android.R.drawable.button_onoff_indicator_on,android.R.drawable.checkbox_off_background,android.R.drawable.checkbox_on_background,android.R.drawable.ic_btn_speak_now,android.R.drawable.ic_delete};listview = (ListView)findViewById(R.id.listview);al = new ArrayList<Map<String,Integer>>();for(int i=0; i<12; i++){HashMap<String,Integer > map = new HashMap<String,Integer>();map.put(""+i, images[i]);al.add(map);}adapter = new MyAdapter(this, al, R.layout.list_item, new String[]{"imageview", "tv"}, new int[]{R.id.imageview, R.id.tv});listview.setAdapter(adapter);listview.setOnItemClickListener(new OnItemClickListener() {public void onItemClick(AdapterView<?> arg0, View arg1, int count,long arg3) {if(adapter.getCount()==count+1){HashMap<String ,Integer> map = new HashMap<String, Integer>();map.put(""+(adapter.mItemList.size()), android.R.drawable.ic_dialog_email);al.add(map);adapter.mItemList = al;adapter.notifyDataSetChanged();Toast.makeText(TestAdapter.this, "正在刷新", Toast.LENGTH_SHORT).show();} }});}private class MyAdapter extends SimpleAdapter{int count = 0;private List<Map<String, Integer>> mItemList;public MyAdapter(Context context, List<? extends Map<String, Integer>> data,int resource, String[] from, int[] to) {super(context, data, resource, from, to);mItemList = (List<Map<String, Integer>>) data;if(data == null){count = 0;}else{count = data.size();}}public int getCount() {return mItemList.size();}public Object getItem(int pos) {return pos;}public long getItemId(int pos) {return pos;}@Overridepublic View getView(int position, View convertView, ViewGroup parent) {Map<String ,Integer> map = mItemList.get(position);int image = map.get(""+position);View view = super.getView(position, convertView, parent);ImageView imageview = (ImageView)view.findViewById(R.id.imageview);TextView tv = (TextView)view.findViewById(R.id.tv);imageview.setBackgroundResource(image);tv.setText(""+position);return view;}} }
2.main.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:orientation="vertical"android:layout_width="fill_parent"android:layout_height="fill_parent"><ListView android:id="@+id/listview"android:layout_width="fill_parent"android:layout_height="wrap_content"></ListView></LinearLayout>
3.list_item.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:orientation="vertical"android:layout_width="fill_parent"android:layout_height="fill_parent"><ImageView android:id="@+id/imageview"android:layout_width="wrap_content"android:layout_height="wrap_content"></ImageView><TextViewandroid:id="@+id/tv" android:layout_width="fill_parent"android:layout_height="wrap_content"></TextView> </LinearLayout>
Android 动态刷新listview中的数据相关推荐
- 动态刷新listview中的数据
转自:http://www.cnblogs.com/ProgramBull/archive/2012/02/06/2340401.html 之前一直困扰listview刷新后位置的问题,现在才明白,原 ...
- Android在ListView中嵌套一个GridView时只显示一行的原因及解决方法
在之前的编程里,我还没有遇到过要在一个ListView中嵌套一个GridView或是在一个GridView中嵌套一个ListView.所以今天事儿来了!我花了一将近3个小时,找到了为什么我在一个Lis ...
- 42.Android之ListView中ArrayAdapter简单学习
今天学习下Android中ListView关于ArrayAdapter数据绑定, 废话少说直接上代码. 改下布局文件: 1 <?xml version="1.0" encod ...
- Android 关于ListView中按钮监听的优化问题(方法二)
关于ListView中按钮监听的优化问题(方法一)地址: http://www.cnblogs.com/steffen/p/3951901.html 之前的方法一,虽然能够解决position的传递, ...
- Android处理ListView中的Item中的Button按钮不能点击的问题
问题描述:ListView列表中的Button按钮按钮不能点击 解决办法:在ListView中的Item项的布局文件中加上:android:descendantFocusability="b ...
- android onitemclicklistener 参数,android – 对listview中的项使用setOnItemClickListener
大家好,有一个应用程序,可以在SD卡上保存音频.我创建了一个listview,它从sdcard中检索文件名.我正在尝试设置一个监听器,所以当单击文件名时,我可以启动另一个播放该文件的意图.当我尝试设置 ...
- android开发--ListView中的getView原理
其实这里的复用技术在列表中是十分常见的,iphone中的tableView也有相关的技术,cell的复用 工作原理: ListView 针对List中每个item,要求 adapter "给 ...
- android开发-Listview中显示不同的视图布局
在重写ListView的BaseAdapter时,我们常常在getView()方法中复用convertView,以提高性能.convertView在Item为单一的同种类型布局时,能够回收并重用,但是 ...
- Android 取得 ListView中每个Item项目的值
首先我们须要创建 ListView .这里假定我们已经创建好了而且使用SimpleAdapter设置好了adapter数据,看一下我们的adapter ArrayList<HashMap< ...
最新文章
- Redis 4.0.X版本reshard出现错误的解决办法
- 【无标题】RestHighLevelClient工具类
- 2020各大网站rss订阅源地址_RSS订阅器inoreader一些使用心得
- android 组合属性动画,Android属性动画组合(sequence串行、together并行)
- python中find函数运算结果类型_Python 运算符与数据类型
- 你大爷还是你大爷!三星震撼首发折叠屏智能手机Galaxy Fold
- sleep、wait、yield、join区别
- Mac系统Option键的妙用,能够极大提升你的效率
- Linux进程、线程、任务调度(1)贵在坚持
- 关于win10优化问题
- 不知道怎样计算权重?告诉你8种确定权重方法
- Java | Comparable接口和Comparator接口比较
- 用妙记多 Mojidoc 实践康奈尔笔记法
- Thinkbook16+ 2022 安装Ubuntu20.04
- android插件实现打印机,Android USB调用打印机(针式打印机)
- 2022年最新大厂校招薪资表流出,拼多多成了薪资的天花板
- SQL Server安装提示【需要microsoft.NET Framework 3.5 Service Pack 1】
- Visio工具的跨线解决问题
- Windows AutoPilot简介转载学习
- 9.面向对象、面向对象-原型模式
热门文章
- docker基本入门
- 恩布开源安卓手机IM,EntboostIM发布1.5.2版本
- Mybatis原理分析之一:从JDBC到Mybatis
- Office 2016 for Mac试用之Excel篇
- MonolithFirst:单体应用优先策略
- 自绘制HT For Web ComboBox下拉框组件
- 第一个程序 - Windows程序设计(SDK)001
- [转]SVN + CruiseControl.NET + NANT 自动编译提交的项目最小DEMO
- Vista OS 中添加网络中的非Vista OS共享的打印机
- 洛谷 P3376 【模板】网络最大流