主要应用项目中展示网络的数据有两个或多个不同的格式布局
首先清单文件中配置权限
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
然后在activity 中做一些操作:
1、网络请求数据
2、解析数据
最后在数据适配器中的操作:
1、自定一个类继承extends BaseAdapter,重写四个常规的方法后,再添加getViewTypeCount(),getItemViewType(int position)
getViewTypeCount()此方法表示共有多少个数据类型,根据数据类型创建多少个item布局文件,getItemViewType(int position)此方法表示返回的数据参数
2、在适配器中根据数据类型的个数定义几个常量<常量是int型且下标必须从0开始,否则运行时会有数组下标越界>
例:public final int SHUJU_1=0;
public final int SHUJU_2=1;
public final int SHUJU_3=2;
3、在getItemViewType(int position)方法中根据条件判断返回的数据参数
例:int i = position % 3;
if (i==0){
return SHUJU_1;
}else if (i==1){
return SHUJU_2;
}else {
return SHUJU_3;
}
4:在getView()中,我们应该优化的问题
例:ViewHolder1 v1=null;
ViewHolder2 v2=null;
ViewHolder3 v3=null;
if (convertView==null) {
switch (type) {
case SHUJU_1:
convertView = View.inflate(context, R.layout.view1, null);
v1 = new ViewHolder1();
v1.v1_images = (ImageView) convertView.findViewById(R.id.v1_images);
v1.v1_texts = (TextView) convertView.findViewById(R.id.v1_texts);
convertView.setTag(v1);
break;
case SHUJU_2:
convertView = View.inflate(context, R.layout.view2, null);
v2 = new ViewHolder2();
v2.v2_image01 = (ImageView) convertView.findViewById(R.id.v2_image01);
v2.v2_image02 = (ImageView) convertView.findViewById(R.id.v2_image02);
v2.v2_image03 = (ImageView) convertView.findViewById(R.id.v2_image03);
convertView.setTag(v2);
break;
case SHUJU_3:
convertView = View.inflate(context, R.layout.view3, null);
v3 = new ViewHolder3();
v3.bu = (Button) convertView.findViewById(R.id.v3_butt);
convertView.setTag(v3);
break;
}
}else {
switch (type){
case SHUJU_1:
v1= (ViewHolder1) convertView.getTag();
break;
case SHUJU_2:
v2= (ViewHolder2) convertView.getTag();
break;
case SHUJU_3:
v3= (ViewHolder3) convertView.getTag();
break;
}
}
switch (type){
case SHUJU_1:
ImageLoader.getInstance().displayImage(list.get(position).getLimage(),v1.v1_images);
v1.v1_texts.setText(list.get(position).getLtitle());
case SHUJU_2:
ImageLoader.getInstance().displayImage(list.get(position).getLimage(),v2.v2_image01);
ImageLoader.getInstance().displayImage(list.get(position).getLimage(),v2.v2_image02);
ImageLoader.getInstance().displayImage(list.get(position).getLimage(),v2.v2_image03);
break;
case SHUJU_3:
v3.bu.setText(list.get(position).getLteamId()+"");
break;
}
}
ImageView v1_images;
TextView v1_texts;
}
class ViewHolder2{
ImageView v2_image01,v2_image02,v2_image03;
}
class ViewHolder3{
Button bu;
}