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;          }      }  }
</div>

  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 >

</div>

  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 >
</div>