Android开发-listview实现多条目展示

本文详细介绍了一种自定义ListView适配器的方法,通过实现BaseAdapter并根据不同位置返回不同类型的视图,展示了如何处理多种布局的条目显示,适用于Android应用开发中复杂UI需求。

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

如果我们的listview做的很好了 那么多条目对你来说就很简单了,因为多条目是基于listview的 它们只是在适配器中有所不同

现在我们来看一下适配器
public class MyAdapter extends BaseAdapter {

	private ArrayList<JsonBean.NewslistBean> list;
    private Context context;

    public MyAdapter(ArrayList<JsonBean.NewslistBean> list, Context context) {
        this.list = list;
        this.context = context;
    }

    @Override
    public int getItemViewType(int position) {
        if (position%2==0){
            //返回第一种视图--左边一张图片--右边是标题和内容
            return 0;
        }else{
            //返回第二种视图--上边是标题  下边三张图片
            return 1;
        }
        ----------------------------------假装有分割线-------------------------------------------------------------------------
        上面的方法是两个条目  下面说一下返回三个条目  它们的区别只是判断的条件不一样
        return position%3;   --这就是三个条目要写的条件  两者只能取其一----
    }

    @Override
    public int getViewTypeCount() {
        return 2;
    }

    @Override
    public int getCount() {
        return list.size();
    }

    @Override
    public Object getItem(int position) {
        return null;
    }

    @Override
    public long getItemId(int position) {
        return 0;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        int type = getItemViewType( position );
        switch (type){
            case 0://第一种视图的情况
                Hoilder1 hoilder1;
                if (convertView == null) {
                    convertView= View.inflate( context, R.layout.list_item, null );
                    //新建一个Hoilder1
                    hoilder1 = new Hoilder1();
                    hoilder1.img1=convertView.findViewById( R.id.img1 );
                    hoilder1.tv_title1=convertView.findViewById( R.id.tv_title1 );
                    hoilder1.tv_description1=convertView.findViewById( R.id.tv_description1 );
                    convertView.setTag( hoilder1 );
                }else{
                    hoilder1= (Hoilder1)convertView.getTag();
                }
                //给控件赋值
                Glide.with( context ).load( list.get( position ).getPicUrl() ).into( hoilder1.img1 );
                hoilder1.tv_title1.setText( list.get( position ).getTitle() );
                hoilder1.tv_description1.setText( list.get( position ).getDescription() );
                break;

            case 1://第二种视图的情况
                Hoilder2 hoilder2;
                if (convertView == null) {
                    convertView= View.inflate( context, R.layout.list_item1, null );
                    //新建一个Hoilder2
                    hoilder2 = new Hoilder2();
                    hoilder2.img2_1=convertView.findViewById( R.id.img2_1 );
                    hoilder2.img2_2=convertView.findViewById( R.id.img2_2 );
                    hoilder2.img2_3=convertView.findViewById( R.id.img2_3 );
                    hoilder2.tv_description2=convertView.findViewById( R.id.tv_description2);
                    convertView.setTag( hoilder2 );
                }else{
                    hoilder2= (Hoilder2)convertView.getTag();
                }
                //给控件赋值
                Glide.with( context ).load( list.get( position ).getPicUrl() ).into( hoilder2.img2_1);
                Glide.with( context ).load( list.get( position ).getPicUrl() ).into( hoilder2.img2_2 );
                Glide.with( context ).load( list.get( position ).getPicUrl() ).into( hoilder2.img2_3 );
                hoilder2.tv_description2.setText( list.get( position ).getDescription() );
                break;
        }
        return convertView;
    }

    //新建一个Hoilder1
    class Hoilder1{
        ImageView img1;
        TextView tv_title1;
        TextView tv_description1;
    }
    //新建一个Hoilder2
    class Hoilder2{
        ImageView img2_1;
        ImageView img2_2;
        ImageView img2_3;
        TextView tv_description2;
    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值