之前一直困扰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中的数据相关推荐

  1. 动态刷新listview中的数据

    转自:http://www.cnblogs.com/ProgramBull/archive/2012/02/06/2340401.html 之前一直困扰listview刷新后位置的问题,现在才明白,原 ...

  2. Android在ListView中嵌套一个GridView时只显示一行的原因及解决方法

    在之前的编程里,我还没有遇到过要在一个ListView中嵌套一个GridView或是在一个GridView中嵌套一个ListView.所以今天事儿来了!我花了一将近3个小时,找到了为什么我在一个Lis ...

  3. 42.Android之ListView中ArrayAdapter简单学习

    今天学习下Android中ListView关于ArrayAdapter数据绑定, 废话少说直接上代码. 改下布局文件: 1 <?xml version="1.0" encod ...

  4. Android 关于ListView中按钮监听的优化问题(方法二)

    关于ListView中按钮监听的优化问题(方法一)地址: http://www.cnblogs.com/steffen/p/3951901.html 之前的方法一,虽然能够解决position的传递, ...

  5. Android处理ListView中的Item中的Button按钮不能点击的问题

    问题描述:ListView列表中的Button按钮按钮不能点击 解决办法:在ListView中的Item项的布局文件中加上:android:descendantFocusability="b ...

  6. android onitemclicklistener 参数,android – 对listview中的项使用setOnItemClickListener

    大家好,有一个应用程序,可以在SD卡上保存音频.我创建了一个listview,它从sdcard中检索文件名.我正在尝试设置一个监听器,所以当单击文件名时,我可以启动另一个播放该文件的意图.当我尝试设置 ...

  7. android开发--ListView中的getView原理

    其实这里的复用技术在列表中是十分常见的,iphone中的tableView也有相关的技术,cell的复用 工作原理: ListView 针对List中每个item,要求 adapter "给 ...

  8. android开发-Listview中显示不同的视图布局

    在重写ListView的BaseAdapter时,我们常常在getView()方法中复用convertView,以提高性能.convertView在Item为单一的同种类型布局时,能够回收并重用,但是 ...

  9. Android 取得 ListView中每个Item项目的值

    首先我们须要创建 ListView .这里假定我们已经创建好了而且使用SimpleAdapter设置好了adapter数据,看一下我们的adapter ArrayList<HashMap< ...

最新文章

  1. Redis 4.0.X版本reshard出现错误的解决办法
  2. 【无标题】RestHighLevelClient工具类
  3. 2020各大网站rss订阅源地址_RSS订阅器inoreader一些使用心得
  4. android 组合属性动画,Android属性动画组合(sequence串行、together并行)
  5. python中find函数运算结果类型_Python 运算符与数据类型
  6. 你大爷还是你大爷!三星震撼首发折叠屏智能手机Galaxy Fold
  7. sleep、wait、yield、join区别
  8. Mac系统Option键的妙用,能够极大提升你的效率
  9. Linux进程、线程、任务调度(1)贵在坚持
  10. 关于win10优化问题
  11. 不知道怎样计算权重?告诉你8种确定权重方法
  12. Java | Comparable接口和Comparator接口比较
  13. 用妙记多 Mojidoc 实践康奈尔笔记法
  14. Thinkbook16+ 2022 安装Ubuntu20.04
  15. android插件实现打印机,Android USB调用打印机(针式打印机)
  16. 2022年最新大厂校招薪资表流出,拼多多成了薪资的天花板
  17. SQL Server安装提示【需要microsoft.NET Framework 3.5 Service Pack 1】
  18. Visio工具的跨线解决问题
  19. Windows AutoPilot简介转载学习
  20. 9.面向对象、面向对象-原型模式

热门文章

  1. docker基本入门
  2. 恩布开源安卓手机IM,EntboostIM发布1.5.2版本
  3. Mybatis原理分析之一:从JDBC到Mybatis
  4. Office 2016 for Mac试用之Excel篇
  5. MonolithFirst:单体应用优先策略
  6. 自绘制HT For Web ComboBox下拉框组件
  7. 第一个程序 - Windows程序设计(SDK)001
  8. [转]SVN + CruiseControl.NET + NANT 自动编译提交的项目最小DEMO
  9. Vista OS 中添加网络中的非Vista OS共享的打印机
  10. 洛谷 P3376 【模板】网络最大流