Android开发之初级开发_适配器之BaseAdapter刷新列表数据

MainActivity.java

import android.os.Bundle;
import android.app.ListActivity;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends ListActivity implements OnClickListener
{
    private MyListAdapter<String> adapter;
    private int index = 0;

    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        adapter = new MyListAdapter<String>(this, android.R.layout.simple_list_item_1)
        {

            protected void initlistcell(int position, View listcell, ViewGroup parent)
            {
                ((TextView) (listcell)).setText(getItem(position));
            }
        };
        setListAdapter(adapter);
        for (index = 1; index < 6; index++)
        {
            adapter.add("love you" + index);
        }
        findViewById(R.id.btn_add).setOnClickListener(this);
        findViewById(R.id.btn_remove).setOnClickListener(this);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu)
    {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

    @Override
    public void onClick(View v)
    {
        switch (v.getId())
        {
        case R.id.btn_add:
            index++;
            adapter.add("love you" + index);
            break;

        case R.id.btn_remove:
            if (adapter.getCount() < 1)
            {
                Toast.makeText(this, "没有可以移除的项", 0).show();
            } else
            {
                adapter.removelast();
            }
            break;
        }

    }

}

MyListAdapter.java

import java.util.ArrayList;
import java.util.List;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;

public abstract class MyListAdapter<T> extends BaseAdapter
{
    // 定义一个泛型的集合
    private List<T> list = new ArrayList<T>();
    private Context context;
    private int listcellid;

    // 添加一个构造方法
    public MyListAdapter(Context context, int resId)
    {
        this.context = context;
        listcellid = resId;
    }

    public Context getContext()
    {
        return context;
    }

    // 添加一项
    public void add(T item)
    {
        list.add(item);
        // 告诉系统界面数据发生变化,刷新界面
        notifyDataSetChanged();
    }

    // 移除一项
    public void remove(int position)
    {
        list.remove(position);
        // 告诉系统界面数据发生变化,刷新界面
        notifyDataSetChanged();
    }

    // 移除最后一项
    public void removelast()
    {

        remove(getCount() - 1);

    }

    // 获取list总数
    public int getCount()
    {
        return list.size();
    }

    public T getItem(int position)
    {
        return list.get(position);
    }

    public long getItemId(int position)
    {
        return position;
    }

    public View getView(int position, View convertView, ViewGroup parent)
    {
        if (convertView == null)
        {
            convertView = LayoutInflater.from(getContext()).inflate(listcellid, null);
        }
        initlistcell(position, convertView, parent);
        return convertView;
    }

    // 定义一个抽象方法,用于初始化listcell
    // 抽象方法不需要实现具体方法实现
    protected abstract void initlistcell(int position, View convertView, ViewGroup parent);
}

布局文件:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <ListView
        android:id="@android:id/list"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1" />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >

        <Button
            android:id="@+id/btn_add"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="添加" />

        <Button
            android:id="@+id/btn_remove"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="移除" />
    </LinearLayout>

</LinearLayout>

 

posted @ 2014-05-14 16:46  loneliness__白色  阅读(1091)  评论(0)    收藏  举报