转自:http://www.cnblogs.com/ProgramBull/archive/2012/02/06/2340401.html

之前一直困扰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>

动态刷新listview中的数据相关推荐

  1. Android 动态刷新listview中的数据

    之前一直困扰listview刷新后位置的问题,现在才明白,原来不能重新设置listview的adapter,而应该用notifyDataSetChanged()来刷新,这样位置就不会置顶. 下面做了一 ...

  2. android如何获取listview中的任意行数据

    android如何获取listview中的任意行数据 @Override public void onItemClick(AdapterView<?> arg0, View arg1, i ...

  3. 简单图库软件的实现(联网下载图片保存到sdcard在Listview中展示,并作为ContentProvider为其他软件提供图库数据)

    先看效果图: 这就是一个可以联网的图库软件,下面我们来看看需求 业务需求 1.判断是否第一次运行,第一次运行,提示添加新条目 2.点击添加按钮,弹出对话框,输入图片网址和标题 3.下载图片保存到本地S ...

  4. listview显示mysql数据_C#在listview控件中显示数据库数据

    一.了解listview控件的属性 view:设置为details columns:设置列 items:设置行 1.将listview的view设置为details 2.设置列属性 点击添加,添加一列 ...

  5. app把信息添加到mysql_如何将数据库表中的数据添加到ListView C#Xamarin Android App

    几天前我问过如何在活动之间共享数据,一个用户告诉我使用SQLite,所以我做了.我想让用户点击MainLayout中的按钮,它会将他重定向到AddTaskLayout,在那里他可以添加任务名称,按下S ...

  6. android 在自定义的listview(有刷新加载项)列表中,数据过少时不能铺满整个屏幕时,header和footer同时显示问题...

    android  在自定义的listview(有刷新加载项)列表中,数据过少时,当刷新时,加载项也会显示,这是很头疼的一个问题,查阅了一些资料,总结了一个比较不错的方法: 原来代码: 1 @Overr ...

  7. 【.Net】C# 将Access中时间段条件查询的数据添加到ListView中

    一.让ListView控件显示表头的方法 在窗体中添加ListView 空间,其属性中设置:View属性设置为:Detail,Columns集合中添加表头中的文字. 二.利用代码给ListView添加 ...

  8. 从网络读取数据并动态的显示在ListView中

    这两天写了个小程序,使用了从网络读取xml数据,并显示在ListView中. 这里面有几个关键点: 从网络读取数据 SAX解析xml 异步填充ListView 先看下截图: 非常简单的界面哈 为了方便 ...

  9. 【苹果相册推送】软件安装表现到ListView中,把网络请求来的数据存储下来

    推荐内容IMESSGAE相关 作者推荐内容 iMessage苹果推软件 *** 点击即可查看作者要求内容信息 作者推荐内容 1.家庭推内容 *** 点击即可查看作者要求内容信息 作者推荐内容 2.相册 ...

最新文章

  1. LINUX下GDB反汇编和调试
  2. SQL Server数据归档的解决方案
  3. C/C++开发游戏项目之《智能图形界面-贪吃蛇》
  4. ilitek win10 触摸屏驱动_想做多大尺寸触摸框找融创方圆定制触摸屏工厂
  5. mac上的Android虚拟机,android虚拟机能在retina MacBook pro上跑吗?
  6. 城镇化把握质量 数据分析让管理更创新
  7. Codeforces Round #222 (Div. 2): C. Maze(BFS)
  8. mssql 2005/2008/2012如何添加、查询、修改分区表中的数据 .
  9. 用Python创建文本文件
  10. hd620显卡驱动 linux,英特尔为Windows 10 推出新显卡驱动 26.20.100.7870
  11. 比较好用的门厂免费录单软件
  12. win10系统优化计算机,win10系统必做优化,让你的电脑告别卡顿,运行速度至少提升20%...
  13. 什么软件可以让头发变黑_吃什么可以让头发变黑?
  14. java使用ffmpeg完成视频加水印功能
  15. Ubuntu18.04 配置 bond4 + RG-5750-LACP
  16. 生于80年代,穷于10年代,败于90后
  17. 虚拟机安装debian教程
  18. 隐私集合求交(PSI)协议研究综述
  19. 周末交友好运气:请找中国张名记
  20. 微信小程序校园学生选课教学论坛信息管理系统SSM-JAVA【数据库设计、论文、源码、开题报告】

热门文章

  1. JAVA-操作excel模版进行写入
  2. Python实现随机抽签
  3. CADENCE 拼板经验
  4. 什么是java集合,java集合有几类?
  5. 导入Excle数据至数据库 “外部表不是预期的格式”错误信息
  6. GDPR对ITSM的影响
  7. 洪柱森老师介绍--沪师经纪-刘建
  8. 荣耀十连续点击android版本9,华为荣耀V10开发者选项如何设置
  9. 时序预测 | MATLAB实现BiLSTM时间序列预测
  10. 离线安装VS2019教程