多条目展示ListView(如:有两种不同的布局图片在listview条目上展示)

本文介绍了一种在Android应用中解析JSON并使用自定义适配器展示不同布局的方法。通过定义两种布局类型(一种带一张图片,另一种带两张图片),并在适配器中根据不同条件加载相应的布局及图片,实现了列表视图的灵活展示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


 前面的代码就是解析接口 json   主要功能代码在适配器类里面  ,实现解析json串中不同布局文件图片在条目中自行判断显示      代码如下:


以下是有俩种布局    如果遇到三种的   一样写    


           / /定义变量

private static final int one=0;
private static final int two=1;




                                         总体来说就是在适配器优化里面所加的一些代码


@Override
public View getView(int position, View convertView, ViewGroup parent) {
//实现多条目展示
honderone honderone =null;
hondertwo hondertwo =null;

//获得不同类型的数据                            
int type = getItemViewType(position);
if (convertView==null) {
switch (type) {

case one:
honderone = new honderone();
//查找布局
convertView=View.inflate(context, R.layout.one, null);
//查找控件
honderone.img= (ImageView) convertView.findViewById(R.id.img);
honderone.name= (TextView) convertView.findViewById(R.id.name);
convertView.setTag(honderone);
break;

case two:
//查找布局
hondertwo = new hondertwo();
convertView=View.inflate(context, R.layout.two, null);
//查找控件
hondertwo.name=(TextView) convertView.findViewById(R.id.name);
hondertwo.img1=(ImageView) convertView.findViewById(R.id.img1);
hondertwo.img2=(ImageView) convertView.findViewById(R.id.img2);
convertView.setTag(hondertwo);

break;


default:
break;
}

}

//赋值
switch (type) {
case one:
//赋值
honderone =(honderone) convertView.getTag();
honderone.name.setText(data.get(position).getTitle());
         DisplayImageOptions options = new DisplayImageOptions.Builder()
              .showImageOnLoading(R.drawable.img_in)            //加载图片时的图片
              .showImageForEmptyUri(R.drawable.img_er)         //没有图片资源时的默认图片
              .showImageOnFail(R.drawable.img_on)              //加载失败时的图片
              .cacheInMemory(true)                               //启用内存缓存
              .cacheOnDisk(true)                                 //启用外存缓存
              .considerExifParams(true)                          //启用EXIF和JPEG图像格式
              .displayer(new RoundedBitmapDisplayer(20))         //设置显示风格这里是圆角矩形
              .build();
         //给图片赋值       第一个参数图片的 url路径        第二个参数   控件
         ImageLoader.getInstance().displayImage(data.get(position).getPicUrl(),honderone.img);


break;
case two:
hondertwo=(hondertwo) convertView.getTag();
hondertwo.name.setText(data.get(position).getTitle());
         //给图片赋值       第一个参数图片的 url路径        第二个参数   控件
ImageLoader.getInstance().displayImage(data.get(position).getPicUrl(), hondertwo.img1);
ImageLoader.getInstance().displayImage(data.get(position).getPicUrl(), hondertwo.img2);
break;


default:
break;
}

return convertView;
}


//实现俩个方法    getItemViewType(int position) 和  getViewTypeCount()

@Override
public int getItemViewType(int position) {
//进行判断   摸除
int aa=position%2;
//如果等等于0走if    否则 走else
if (aa==0) {
return one;

}else{
return two;
}
}
//第二个方法
@Override
public int getViewTypeCount() {
// TODO Auto-generated method stub
return 2;
}
          //优化布局1
class honderone{

TextView name;
ImageView img;
}
     //优化布局2
class hondertwo{

TextView name;
ImageView img1;
ImageView img2;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值