自學安卓複習基礎_之十(使用適配器BaseAdapter來實現listView的CRD)

和上一個例子是一樣的,只是使用不同的方式實現。自定義的adapter繼承BaseAdapter,好啦,看代碼吧。都是些簡單的例子,希望能幫到剛在學習安卓的童鞋!
這裏寫圖片描述
步驟一:創建一個實體類,作爲ListView適配器的適配類型

public class Fruit {
    private String name;
    private int imgeid;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getImgeid() {
        return imgeid;
    }
    public void setImgeid(int imgeid) {
        this.imgeid = imgeid;
    }
    public Fruit(String name, int imgeid) {

        this.name = name;
        this.imgeid = imgeid;
    }


}

步驟二:創建兩個layout佈局,一個是listView的子項佈局,一個是listview頁面佈局
item.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal" >
   <ImageView 
       android:id="@+id/iv"
       android:layout_height="80dp"
       android:layout_width="80dp"
       android:src="@drawable/d"
       />
    <TextView 
        android:id="@+id/tv"
        android:layout_height="80dp"
        android:layout_width="0dp"
        android:layout_weight="1"
        android:text="hahhaha"
        android:gravity="center"
        />

    <Button
        android:id="@+id/btn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="刪除" />

</LinearLayout>

list.xml

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

    <Button
        android:id="@+id/btn"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="添加一個item" />

    <ListView
        android:id="@+id/lv"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >
    </ListView>

</LinearLayout>

步驟三:創建一個自定義的適配器,這個適配器需要繼承BaseAdapter

public class FruitAdapter extends BaseAdapter{

    private List<Fruit> all;
    private MainActivity activity;
    private LayoutInflater inflate=null;
    public FruitAdapter(List<Fruit> all,MainActivity context) {
        inflate=LayoutInflater.from(context);
        this.all=all;
        this.activity=context;

    }
    @Override
    public int getCount() {
        // 獲取到集合的總數
        return all.size();
    }

    @Override
    public Object getItem(int position) {
        // TODO Auto-generated method stub
        return null;
    }

    @Override
    public long getItemId(int position) {
        // TODO Auto-generated method stub
        return position;
    }

    @SuppressLint("InflateParams")
    @Override
    public View getView(final int position, View convertView, ViewGroup parent) {
        ViewHolder holder;
        if (convertView==null) {
            convertView=inflate.inflate(R.layout.item, null);
            holder=new ViewHolder();
            holder.iv=(ImageView) convertView.findViewById(R.id.iv);
            holder.tv=(TextView) convertView.findViewById(R.id.tv);
            holder.btn=(Button) convertView.findViewById(R.id.btn);
            convertView.setTag(holder);
        }else {
            holder=(ViewHolder) convertView.getTag();
        }
        Fruit f=all.get(position);
        holder.iv.setImageResource(f.getImgeid());
        holder.tv.setText(f.getName());
        holder.btn.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                activity.delData(position);
            }
        });
        return convertView;
    }

    class ViewHolder{
        private ImageView iv;
        private TextView tv;
        private Button btn;
    }
}

步驟四:完成修改MainActivity的代碼

public class MainActivity extends Activity{

    private ListView lv;
    private List<Fruit> all;
    private FruitAdapter adapter;
    private Button btn;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.list);
        all=initData();
        lv=(ListView) findViewById(R.id.lv);
        adapter=new FruitAdapter(all, MainActivity.this);
        btn=(Button) findViewById(R.id.btn);
        lv.setAdapter(adapter);
        btn.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                add();
            }
        });
    }
    private List<Fruit> initData(){
        List<Fruit> list=new ArrayList<Fruit>();
        Fruit f=new Fruit("haha1", R.drawable.a);
        list.add(f);
        Fruit q=new Fruit("haha2", R.drawable.b);
        list.add(q);
        Fruit a=new Fruit("haha3", R.drawable.c);
        list.add(a);
        Fruit b=new Fruit("haha4", R.drawable.d);
        list.add(b);
        Fruit c=new Fruit("haha5", R.drawable.a);
        list.add(c);
        Fruit d=new Fruit("haha6", R.drawable.a);
        list.add(d);
        return list;
    }
    public void delData(int position){
        all.remove(position);
        adapter.notifyDataSetChanged();
    }
    private void add(){
        Fruit d=new Fruit("新增的item", R.drawable.a);
        all.add(0,d);
        adapter.notifyDataSetChanged();
    }
}

步驟五:最後不要忘記在清單文件中註冊MainActivity哦。這樣就完成了簡單的增刪查啦。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章