自学安卓复习基础_之十(使用适配器BaseAdapter来实现listView的CRD)

来源:互联网 发布:推荐c 语言在线编译 编辑:程序博客网 时间:2024/05/21 00:54

和上一个例子是一样的,只是使用不同的方式实现。自定义的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哦。这样就完成了简单的增删查啦。

0 0
原创粉丝点击