Android动态刷新listview中的数据
openkk
12年前
代码如下:
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 = 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; } @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 >