Android 自定义Adapter的ListView

来源:互联网 发布:js before 编辑:程序博客网 时间:2024/05/17 15:20

一、ListView
这里写图片描述
一个ListView的创建,需要两个必要的元素:
(1)Data source数据集
数据集里面存放我们需要显示的数据list,list里面什么都可以放,可以放基本类型,也可以放自己定义的数据类型。图片文字都可以。
(2)Adapter 适配器
适配器主要负责,把数据按照我们的需求装到ListView控件里。


二、数据集
(1)自己定义的数据

private void getData()    {        itemList.add("粮食");        itemList.add("水果");        itemList.add("坚果");        detailList.add("粮食");        detailList.add("大米");        detailList.add("小米");        detailList.add("绿豆");        detailList.add("红豆");        detailList.add("黑豆");        detailList.add("薏米");        detailList.add("水果");        detailList.add("苹果");        detailList.add("香蕉");        detailList.add("葡萄");        detailList.add("橘子");        detailList.add("柚子");        detailList.add("西瓜");        detailList.add("橙子");        detailList.add("坚果");        detailList.add("花生");        detailList.add("核桃");        detailList.add("杏仁");        detailList.add("松子");        detailList.add("榛子");        detailList.add("白果");        detailList.add("莲子");    }

(2)从数据库或者WebApi获得数据


三、适配器

public class ClassifyListViewActivity extends Activity implements OnItemClickListener{    private Context context;    private ListView lv_ClassifyListView;    private List<String> itemList;    private List<String> detailList;    private ClassifyListViewAdapter adapter;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_classifylistview);        context=ClassifyListViewActivity.this;        initView();        initData();    }    private void initView()    {        lv_ClassifyListView=(ListView)findViewById(R.id.lv_ClassifyListView);        itemList=new ArrayList<String>();        detailList=new ArrayList<String>();        adapter=new ClassifyListViewAdapter(context,itemList,detailList);        lv_ClassifyListView.setAdapter(adapter);        lv_ClassifyListView.setOnItemClickListener(this);    }    private void initData()    {           getData();        adapter.notifyDataSetChanged();    }    private void getData()    {        itemList.add("粮食");        itemList.add("水果");        itemList.add("坚果");        detailList.add("粮食");        detailList.add("大米");        detailList.add("小米");        detailList.add("绿豆");        detailList.add("红豆");        detailList.add("黑豆");        detailList.add("薏米");        detailList.add("水果");        detailList.add("苹果");        detailList.add("香蕉");        detailList.add("葡萄");        detailList.add("橘子");        detailList.add("柚子");        detailList.add("西瓜");        detailList.add("橙子");        detailList.add("坚果");        detailList.add("花生");        detailList.add("核桃");        detailList.add("杏仁");        detailList.add("松子");        detailList.add("榛子");        detailList.add("白果");        detailList.add("莲子");    }    @Override    public void onItemClick(AdapterView<?> parent, View view, int position,            long id) {        String detail=(String) adapter.getItem(position);        Toast.makeText(context, detail, Toast.LENGTH_SHORT).show();    }}

五、XML

1、activity_classifylistview

<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="@+id/lv_ClassifyListView"        android:layout_width="match_parent"        android:layout_height="match_parent">           </ListView></LinearLayout>

2、activity_classifylistview_item

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical"     android:background="@color/pink">    <TextView        android:id="@+id/tv_ClassifyListView_item"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:layout_marginLeft="8dp"        android:textSize="16sp">    </TextView></LinearLayout>

3、activity_classifylistview_detail

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical" >    <TextView        android:id="@+id/tv_ClassifyListView_detail"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:layout_marginLeft="16dp"        android:textSize="14sp">    </TextView></LinearLayout>

六、效果图

这里写图片描述

0 0