自学安卓复习基础_之十(使用适配器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哦。这样就完成了简单的增删查啦。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值