之前一直困扰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; @Override
public 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=; i<; 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+){
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 = ;
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 = ;
}else{
count = data.size();
}
}
public int getCount() {
return mItemList.size();
} public Object getItem(int pos) {
return pos;
} public long getItemId(int pos) {
return pos;
} @Override
public 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>
<TextView
android:id="@+id/tv" android:layout_width="fill_parent"
android:layout_height="wrap_content"
></TextView>
</LinearLayout>

Android 动态刷新listview中的数据的更多相关文章

  1. C#中清空ListView中的数据

    我的显示数据的方式通过button按钮点击事件,当点击之后查询数据库库并将数据显示出来. 代码如下: private void button6_Click(object sender, EventAr ...

  2. c#导出ListView中的数据到Excel表格

    1.添加组件:Microsoft.Office.Interop.Excel 步骤:右键点击“引用”--->添加引用--->COM--->Microsoft.Office.Intero ...

  3. android代码优化----ListView中自定义adapter的封装(ListView的模板写法)

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...

  4. 43.Android之ListView中BaseAdapter学习

    实际开发中个人觉得用的比较多是BaseAdapter,尽管使用起来比其他适配器有些麻烦,但是使用它却能实现很多自己喜欢的列表布局,比如ListView.GridView.Gallery.Spinner ...

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

    在Android应用开发过程中经常会用到ListView,并且每次在item中都要对点击事件进行监听.在给按钮添加OnClickListener时,一般会下意识的在getView()中找到每一个But ...

  6. 如何在Android的ListView中构建CheckBox和RadioButton列表(支持单选和多选的投票项目示例)

    引言 我们在android的APP开发中有时候会碰到提供一个选项列表供用户选择的需求,如在投票类型的项目中,我们提供一些主题给用户选择,每个主题有若干选项,用户对这些主题的选项进行选择,然后提交. 本 ...

  7. 【Android】ListView中EditText焦点问题

    一.描述: 近期一个项目中需要开发一种类似表格的界面来显示和配置参数,Android并无直接类似表格的控件支持,我采用了ListView中布局EditText和TextView来实现,其中TextVi ...

  8. Android 实现ListView中Item被单击后背景色保持高亮

    今天为了解决一个需求,就是我有一个slidingDrawer,里面是一个ListView.然后,单击其中的Item,默认只是显示一个橙色背景后就恢复了.客户便有着个需求,需要单击这个Item的背景高亮 ...

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

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

随机推荐

  1. JAVA的StringBuffer类(转载整理)____非常重要的一个类,线程安全,不用每次创建一个对象,以及和String的区别

    核心部分转载自:http://www.cnblogs.com/springcsc/archive/2009/12/03/1616330.html StringBuffer类和String一样,也用来代 ...

  2. asp.net导入2013版本的excel问题解决

    net中导入2013excel的故障解决办法. 修改导入excel的连接字符串 string strCon = "Provider=Microsoft.ACE.OLEDB.12.0;Data ...

  3. 使用resumable.js上传大文件(视频)兵转换flv格式

    前台代码 <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Video.asp ...

  4. update语句

    [update cicm.cicmodt0702 set msgbody = :1 where msgid between :2 and :3         ] [update cicm.cicmo ...

  5. 九度OJ 1500 出操队形 -- 动态规划(最长上升子序列)

    题目地址:http://ac.jobdu.com/problem.php?pid=1500 题目描述: 在读高中的时候,每天早上学校都要组织全校的师生进行跑步来锻炼身体,每当出操令吹响时,大家就开始往 ...

  6. Unable to make the session state request to the session state server处理方法

    Server Error in '/' Application. Unable to make the session state request to the session state serve ...

  7. AD,Group

    DataTable dtUser = GetEmptyDT(); Dictionary<DirectoryEntry, string> test1 = GetUserAndGroup(cl ...

  8. iis7.5 aspx,ashx的mime类型

    映射aspx: 打开IIS管理器,找到“处理程序映射”,在列表右击选择“添加脚本映射”即可.eg:*.aspx,将该类型的页面的处理程序映射为“%windir%\Microsoft.NET\Frame ...

  9. 网页制作常见的面试题(怎样兼容IE6/IE7/火狐浏览器)

    1.IE6双边距问题? 在IE6的浏览器中明明设置的是10px的margin却为什么显示的是20px的margin其实这个Ie6的一个双边距BUG例如:<style type="tex ...

  10. ie6下 gif动画不动

    ie6下 gif动画不动 如果有onclick事件:在IE6中,点击a标签,onclick事件会先执行,其次是href下的动作,href执行后,默认会执行跳转动作(尽管href属性不一定是一个地址), ...