今天来跟大家讨论下同一个ListView如何加载不同的布局。
老规矩,先来看效果图。
主要步骤如下
- 1.增加Type。
- 2.重写getViewTypeCount方法。
3.重写getItemViewType方法。
4.重写getView方法。
1.增加Type
我们这里只有2种type;故
private final int TYPE_01 = 0; private final int TYPE_02 = 1;
2.重写getViewTypeCount方法。因为只有2个,所以这里直接返回2了。
@Override public int getViewTypeCount() { return 2; }
3.重写getItemViewType方法。
这里是根据不同的pos来判断布局。
@Override public int getItemViewType(int position) { if(position==0) return TYPE_01; else return TYPE_02; }
4.重写getView
跟普通的getView一样,只不过多了一个switch的过程
@Override public View getView(int i, View view, ViewGroup viewGroup) { ViewHolder viewHolder=null; int type = getItemViewType(i); if(view == null){ switch (type){ case TYPE_01: view = mInflater.inflate(R.layout.item_main_top,null); final Switch mSwitch = (Switch) view.findViewById(R.id.switch_list_main); } } else { //close the LocationService break; case TYPE_02: view = mInflater.inflate(R.layout.item_main,null); viewHolder = new ViewHolder(); viewHolder.mTextView = (TextView) view.findViewById(R.id.textView_item_main); view.setTag(viewHolder); break; } }else{ switch (type){ case TYPE_02: viewHolder = (ViewHolder) view.getTag(); break; } } switch(type) { case TYPE_02: viewHolder.mTextView.setText(mStringArr[i-1]); break; } return view; }
这样便可对ListView加载不同Type的布局。
来源:https://www.cnblogs.com/muyuge/p/6333563.html