Android動態刷新listview中的數據

openkk 12年前發布 | 44K 次閱讀 Android Android開發 移動開發

代碼如下:

  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 >
 本文由用戶 openkk 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!