您的位置:首页 > 移动开发 > Android开发

Android 自定义Adapter的ListView

2015-04-03 16:23 531 查看
一、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>


六、效果图

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息