Android 动态刷新listview中的数据
生活随笔
收集整理的這篇文章主要介紹了
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中的数据的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 个人重构之一般用户实现
- 下一篇: 如何利用WebScarab绕过JS验证