android 多个layout布局listView

本文介绍了如何在Android中实现ListView使用多个布局的方法。通过创建不同类型的布局,并在自定义适配器中根据位置返回不同的布局类型,实现了在ListView中交替显示不同样式的效果。在getView方法中,通过判断convertView和type来决定加载哪种布局并设置对应内容。

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

android  多个layout布局listView

上效果图先:



1、在MainActivity的OnCreate中填写的代码如下所示:
listview=(ListView) findViewById(R.id.listView);
adapter=new MyAdapter(this);
listview.setAdapter(adapter);

这几行代码实现对listView与适配器之间的绑定。


2、声明几个类型变量

final int VIEW_TYPE = 2; // 总的item样式数
final int TYPE_0 = 0;  // 第一个item布局
final int TYPE_1 = 1; //第二个item布局

3、在MyAdapter 类里面添加以下两个方法:

@Override
public int getItemViewType(int position) {  //item样式的返回类型绑定
if (position == 0) {
return TYPE_0;
} else {
return TYPE_1;
}
}


@Override
public int getViewTypeCount() {  //item样式类型总数

return VIEW_TYPE;
}


4、getView方法中layout的绑定方式

@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder = new ViewHolder();
ViewHolder1 holder1 = new ViewHolder1();

int type=getItemViewType(position);  //获取所有样式类型总数
if (convertView == null) {
           switch(type){
           case TYPE_0:
          convertView=inflater.inflate(R.layout.listview_item, parent,false);
          holder.txt_name=(TextView) convertView.findViewById(R.id.textView1);
          holder.txt_con=(TextView) convertView.findViewById(R.id.textView2);
          holder.img_header=(ImageView) convertView.findViewById(R.id.imageView);
          convertView.setTag(holder);
          
          break;
           case TYPE_1:
          
          convertView=inflater.inflate(R.layout.listview_item1, parent,false);
          holder1.img1=(ImageView) convertView.findViewById(R.id.imageView1);
          holder1.img2=(ImageView) convertView.findViewById(R.id.imageView2);
          holder1.img3=(ImageView) convertView.findViewById(R.id.imageView3);
          holder1.img4=(ImageView) convertView.findViewById(R.id.imageView4);
          holder1.img5=(ImageView) convertView.findViewById(R.id.imageView5);
          convertView.setTag(holder1);
          break;
         default:break;
           }
}else{
switch(type){
          case TYPE_0:
         holder=(ViewHolder) convertView.getTag();
          break;
          case TYPE_1:
         holder1=(ViewHolder1) convertView.getTag();
          break;
          }
}
switch(type){
        case TYPE_0:
        holder.txt_name.setText("现在好无聊哦!");
        holder.txt_con.setText("你之所以会无聊,是因为你没有事情可以做!");
        holder.img_header.setBackgroundResource(R.drawable.pic);
        
        break;
        case TYPE_1:
       
        break;
        }



return convertView;
}

5、ViewHolder类中空间的声明

class ViewHolder {
private TextView txt_name, txt_con;
private ImageView img_header;
}


class ViewHolder1 {
@SuppressWarnings("unused")
private TextView txt_name1, txt_con1;
private ImageView img1, img2, img3, img4, img5;
}


代码下载:http://download.youkuaiyun.com/detail/greatsuny/7556377

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值