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

android ListView加载不同布局

2015-10-27 20:11 543 查看
今天来跟大家讨论下同一个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的布局。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: