北大青鸟光谷校区

北大青鸟光谷校区

  • 北大青鸟徐东校区
  • 北大青鸟光谷校区
  • 北大青鸟宏鹏IT校区
  • 荆州青鸟之家
  • 襄阳青鸟之家

15902769092

百日千才

listview刷新:Android动态刷新listview中的数据

2013-01-16 14:40来源:武汉北大青鸟光谷校区作者:027hpit

 

       【武汉北大青鸟android培训】之前一直困扰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=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<StringInteger>();
                    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<StringInteger>> mItemList;
        
public MyAdapter(Context context, List<? extends Map<StringInteger>> data,
                
int resource, String[] from, int[] to) {
            super(context, data, resource, from, 
to);
            mItemList 
= (List<Map<StringInteger>>) 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>

 

关闭

只为了方便您就学 北大青鸟光谷校区 北大青鸟光谷校区

武汉市江夏区华泰街武昌理工学院对面

全真项目实战 入学签就业协议

Copyright (c) 2006-2021 武汉宏鹏教育咨询有限公司 版权所有 All Rights Reserved.