Listview 设置不同类型的item
2015-04-10 14:56
260 查看
要想设置不同的item需要在adapter里面重写两个方法
getItemViewType() 需要注意这个个类型是0开始
getViewTypeCount();
getItemViewType() 需要注意这个个类型是0开始
getViewTypeCount();
package com.example.listview_01; import java.util.List; import android.content.Context; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.TextView; public class MyAdapter extends BaseAdapter { private Context context; private List<ViewItem> list; private LayoutInflater inflater; public MyAdapter(Context context, List<ViewItem> list) { this.context = context; this.list = list; inflater = LayoutInflater.from(context); } @Override public int getCount() { return list.size(); } @Override public Object getItem(int position) { return list.get(position); } @Override public long getItemId(int position) { return position; } @Override public int getItemViewType(int position) { return list.get(position).getType(); } @Override public int getViewTypeCount() { return 2; } @Override public View getView(int position, View convertView, ViewGroup parent) { HolderType1 holderType1 = null; HolderType2 holderType2 = null; int type = getItemViewType(position); if (convertView == null) { // 根据不同的type设置不同的布局 switch (type) { case 0: convertView = inflater.inflate(R.layout.activity_item, null); holderType1 = new HolderType1(convertView); convertView.setTag(holderType1); break; case 1: convertView = inflater.inflate(R.layout.activity_item2, null); holderType2 = new HolderType2(convertView); convertView.setTag(holderType2); break; } } else { // 根据不同的布局设置不同的holder switch (type) { case 0: holderType1 = (HolderType1) convertView.getTag(); break; case 1: holderType2 = (HolderType2) convertView.getTag(); break; } } ViewItem item = list.get(position); // 根据不同的布局给控件填充数据 switch (type) { case 0: holderType1.addressTxt.setText(item.getAddress()); holderType1.nameTxt.setText(item.getName()); holderType1.ageTxt.setText(item.getAge()); break; case 1: holderType2.titleTxt.setText(item.getTitle()); break; } return convertView; } private class HolderType1 { public TextView nameTxt; public TextView ageTxt; public TextView addressTxt; public HolderType1(View convertView) { nameTxt = (TextView) convertView.findViewById(R.id.name); ageTxt = (TextView) convertView.findViewById(R.id.age); addressTxt = (TextView) convertView.findViewById(R.id.address); } } private class HolderType2 { public TextView titleTxt; public HolderType2(View convertView) { titleTxt = (TextView) convertView.findViewById(R.id.title); } } }
相关文章推荐
- Listview 设置不同类型的item
- Android为ListView的Item设置不同的布局
- Android为ListView的Item设置不同的布局
- Android 不同类型item的listview
- ListView的item为TextView的时候,选中item设置不同的背景
- getItemViewType为Listview的item设置不同的布局
- ListView同一个适配器设置不同的item时遇到java.lang.ArrayIndexOutOfBoundsException: length=3; index=3
- Android listView每个item设置不同
- android中通过网络请求数据显示在Listview中,面对许多的item,如何给每个item设置点击事件以跳转到不同的activity
- Android应用之——利用getItemViewType为Listview的item设置不同的布局
- listView,getView()中给Item设置Layoutparams类型转换异常
- Android为ListView的Item设置不同的布局
- Android中ListView使用getItemViewType为item设置不同的布局
- Android为ListView的Item设置不同的布局
- 在android listview中,我如何显示类型不同的item,
- Andriod之Adapter的getViewTypeCount和getItemViewType为Listview的item设置不同的布局
- Android应用之——利用getItemViewType为Listview的item设置不同的布局
- 在adapter中继承BaseAdapter得到数据穿插数据(ListView中加载不同的类型item)
- listview如何包含不同类型的Item
- ListView设置不同item