BaseAdapter几个重载方法介绍isEnabled,getViewTypeCount ,getItemViewType
来源:互联网 发布:阿肆预谋邂逅 知乎 编辑:程序博客网 时间:2024/06/05 17:12
public boolean isEnabled (int position):如果列表的一项item是separator(充当分隔项目,跟其他item项一样,也可以不一样,但是无法进行点击),返回true,也就是可以点击,并接收响应事件。如果此时position处的item是separator的话,返回false,也就无法响应点击或触摸事件,此项目是不可以点击的,表现形式为点了没任何反应,可以充当一个列表中的分隔,当然可以自定义这个分隔项的布局。
public int getItemViewType (int position):以int数值型返回itemView的类型。一般普通列表的item都是一样的布局,也就是说这个列表只有一种类型,但是很多时候我们需要列表显示不同的item,比如有的列表有普通item和separator两种类型,item用于响应用户点击事件,separator用于分隔item,不可以点击,这样这个列表就有了两种类型,重载这个方法,如果当前位置是item,我们可以返回1,如果是separator我们可以返回2,以此类推。
public int getViewTypeCount ():以int数值类型返回列表拥有的itemview的个数,比如上例中,有两种类型的item,此方法返回2。
具体用法可以参照这个链接:http://android.amberfog.com/?p=296不过此链接的例子实现了不同item的布局,但是作为separator的item依然可以点击,在例子中重载isEnabled方法,当前位置如果为separator时,返回false即可。
理解了很久才想通,直到看到上面那个链接才明白。佩服至极,能如此地透彻理解!
Different list items’ layouts
Let’s move to the “more complicated” example. How about to add separator somewhere to the list.
You should do the following:
- Override getViewTypeCount() – return how many different view layouts you have
- Override getItemViewType(int) – return correct view type id by position
- Create correct convertView (depending on view item type) in getView
public class MultipleItemsList extends ListActivity { private MyCustomAdapter mAdapter; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); mAdapter = new MyCustomAdapter(); for (int i = 1; i < 50; i++) { mAdapter.addItem("item " + i); if (i % 4 == 0) { mAdapter.addSeparatorItem("separator " + i); } } setListAdapter(mAdapter); } private class MyCustomAdapter extends BaseAdapter { private static final int TYPE_ITEM = 0; private static final int TYPE_SEPARATOR = 1; private static final int TYPE_MAX_COUNT = TYPE_SEPARATOR + 1; private ArrayList mData = new ArrayList(); private LayoutInflater mInflater; private TreeSet mSeparatorsSet = new TreeSet(); public MyCustomAdapter() { mInflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE); } public void addItem(final String item) { mData.add(item); notifyDataSetChanged(); } public void addSeparatorItem(final String item) { mData.add(item); // save separator position mSeparatorsSet.add(mData.size() - 1); notifyDataSetChanged(); } @Override public int getItemViewType(int position) { return mSeparatorsSet.contains(position) ? TYPE_SEPARATOR : TYPE_ITEM; } @Override public int getViewTypeCount() { return TYPE_MAX_COUNT; } @Override public int getCount() { return mData.size(); } @Override public String getItem(int position) { return mData.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder = null; int type = getItemViewType(position); System.out.println("getView " + position + " " + convertView + " type = " + type); if (convertView == null) { holder = new ViewHolder(); switch (type) { case TYPE_ITEM: convertView = mInflater.inflate(R.layout.item1, null); holder.textView = (TextView)convertView.findViewById(R.id.text); break; case TYPE_SEPARATOR: convertView = mInflater.inflate(R.layout.item2, null); holder.textView = (TextView)convertView.findViewById(R.id.textSeparator); break; } convertView.setTag(holder); } else { holder = (ViewHolder)convertView.getTag(); } holder.textView.setText(mData.get(position)); return convertView; } } public static class ViewHolder { public TextView textView; }}
- BaseAdapter几个重载方法介绍isEnabled,getViewTypeCount ,getItemViewType
- BaseAdapter几个重载方法介绍isEnabled,getViewTypeCount ,getItemViewType
- BaseAdapter几个重载方法介绍isEnabled,getViewTypeCount ,getItemViewType
- BaseAdapter几个重载方法介绍isEnabled,getViewTypeCount ,getItemViewType
- BaseAdapter方法介绍isEnabled、getViewTypeCount、getItemViewType
- Adapter的几个重载方法介绍isEnabled,getViewTypeCount ,getItemViewType
- BaseAdapter 的getItemViewType和getViewTypeCount
- ListView和BaseAdapter的getViewTypeCount和getItemViewType方法实现Gridview,显示多列
- getItemViewType()、getViewTypeCount()?
- ListView 使用BaseAdapter时的getItemViewType 和 getViewTypeCount作用
- Adapter的getViewTypeCount和getItemViewType
- Adapter的getViewTypeCount和getItemViewType
- Adapter的getViewTypeCount和getItemViewType
- Adapter的getViewTypeCount和getItemViewType
- Adapter的getViewTypeCount和getItemViewType
- Adapter的getViewTypeCount和getItemViewType
- getItemViewType和getViewTypeCount的区别
- Adapter的getViewTypeCount和getItemViewType
- HBase协处理器
- 河内塔(单色和双色)
- 关于CvvImage程序
- 一些比较常用的快捷键
- Ajax整合的力量
- BaseAdapter几个重载方法介绍isEnabled,getViewTypeCount ,getItemViewType
- mysql 忘记密码
- POJ 2135 Farm Tour 农场之旅
- 【多维分析系列】拥抱大数据多维分析查询
- LSM-tree
- 【东方幻想乡系列模拟赛 Stage 4】 河城荷取
- 图的深度优先搜索与广度优先搜索
- [Usaco2013 Nov]Crowded Cows
- Python之禅