ListView 加载不同的布局Item
涉及到了两个方法,分别是:getItemViewType(int position) //返回的是加载布局的类别
getViewTypeCount() //返回的是类型的个数
有两种方式:
共有代码
private staitc final int NUM1 = 0;
private static final int NUM2 = 2;
private static final int NUM3 = 3;
class ViewHolder1{
private TextView tv1;
}
class ViewHolder2{
private TextView tv2;
}
class ViewHolder3{
private TextView tv3;
}
@Override
public int getItemViewType(int position) {
if(data.getType.equals("1")){
return 1;
}else if(data.getType.equals("2")){
return 2;
}else{
return 0;
}
}
@Override
public int getViewTypeCount() {
return 3;//返回三个类型
}
方式一:
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
View view = convertView;
ViewHolder holder = null;
ViewHolder1 holder1 = null;
ViewHolder2 holder2 = null;
switch(getItemViewType(position)){
case 0:
if (convertView == null) {
convertView = getActivity().getLayoutInflater().inflate(R.layout.item_list_image, parent, false);
holder1 = new ViewHolder1();
holder1.tv = (TextView) convertView.findViewById(R.id.tv);
convertView.setTag(holder1); // 给View添加一个格外的数据
}
break;
case 1:
if (convertView == null) {
convertView = getActivity().getLayoutInflater().inflate(R.layout.item_list_image, parent, false);
holder2 = new ViewHolder2();
holder2.tv = (TextView) convertView.findViewById(R.id.tv);
convertView.setTag(holder2); // 给View添加一个格外的数据
}
break;
case 2:
if (convertView == null) {
convertView = getActivity().getLayoutInflater().inflate(R.layout.item_list_image, parent, false);
holder3 = new ViewHolder3();
holder3.tv = (TextView) convertView.findViewById(R.id.tv);
convertView.setTag(holder3); // 给View添加一个格外的数据
}
break;
}
//
switch(getItemViewType(position)){
case 0:
holder1 = (ViewHolder1)view.getTag();
break;
case 1:
holder2 = (ViewHolder2)view.getTag();
break;
case 2:
holder3 = (ViewHolder3)view.getTag();
break;
}
//附加数据
switch(getItemViewType(position)){
case 0:
holder1.tv1.setText("nubmer1");
break;
case 1:
holder2.tv2.setText("nubmer2");
break;
case 2:
holder3.tv3.setText("nubmer3");
break;
}
return convertView;
}
}
方式二:
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
View view = convertView;
ViewHolder holder = null;
ViewHolder1 holder1 = null;
ViewHolder2 holder2 = null;
switch(getItemViewType(position)){
case 0:
if (convertView == null) {
convertView = getActivity().getLayoutInflater().inflate(R.layout.item_list_image, parent, false);
holder1 = new ViewHolder1();
holder1.tv = (TextView) convertView.findViewById(R.id.tv);
convertView.setTag(holder1); // 给View添加一个格外的数据
}else{
holder1 = (ViewHolder1)view.getTag();
}
holder1.tv1.setText("nubmer1");
break;
case 1:
if (convertView == null) {
convertView = getActivity().getLayoutInflater().inflate(R.layout.item_list_image, parent, false);
holder2 = new ViewHolder2();
holder2.tv = (TextView) convertView.findViewById(R.id.tv);
convertView.setTag(holder2); // 给View添加一个格外的数据
}else{
holder2 = (ViewHolder2)view.getTag();
}
holder2.tv2.setText("nubmer2");
break;
case 2:
if (convertView == null) {
convertView = getActivity().getLayoutInflater().inflate(R.layout.item_list_image, parent, false);
holder3 = new ViewHolder3();
holder3.tv = (TextView) convertView.findViewById(R.id.tv);
convertView.setTag(holder3); // 给View添加一个格外的数据
}else{
holder3 = (ViewHolder3)view.getTag();
}
holder3.tv3.setText("nubmer3");
break;
}
return convertView;
}
}