多条目适配器使用

本文介绍了一个自定义的新闻适配器类NewsAdapter,用于处理不同数量图片的新闻条目显示。该适配器能根据每条新闻图片的数量(0至3张)动态选择不同的布局,有效地实现了ListView中新闻条目的多样化展示。

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



import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;

import com.nostra13.universalimageloader.core.ImageLoader;

import java.util.List;


public class NewsAdapter extends BaseAdapter {
    private Context context;
    private List<News.ResultBean.DataBean> list;

    public NewsAdapter(Context context, List<News.ResultBean.DataBean> list) {
        this.context = context;
        this.list = list;
    }

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

    @Override
    public Object getItem(int position) {
        return list.get(position);
    }

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

    @Override
    public int getItemViewType(int position) {
        List<News.ResultBean.DataBean.ImagesBean> beans = list.get(position).getImages();
        if (beans.size() == 0 ){
            return 3;
        }else if(beans.size() == 1){
            return 2;
        }else if(beans.size() == 2){
            return 1;
        }else {
            return 0;
        }
    }

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

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        ViewHolder1 holder1 = null;
        ViewHolder2 holder2 = null;
        ViewHolder3 holder3 = null;
        ViewHolder4 holder4 = null;

        int type = getItemViewType(position);
        switch (type){
            case 3:
                if (convertView == null){
                    convertView = View.inflate(context,R.layout.layout_list4,null);
                    holder4 = new ViewHolder4();
                    holder4.txtTitle = convertView.findViewById(R.id.txt_title);
                    convertView.setTag(holder4);
                }else {
                    holder4 = (ViewHolder4) convertView.getTag();
                }
                holder4.txtTitle.setText(list.get(position).getTitle());
                break;
            case 2:
                if (convertView == null){
                    convertView = View.inflate(context,R.layout.layout_list3,null);
                    holder3 = new ViewHolder3();
                    holder3.iamgeLogo1 = convertView.findViewById(R.id.image_logo);
                    holder3.txtTitle = convertView.findViewById(R.id.txt_title);
                    convertView.setTag(holder3);
                }else {
                    holder3 = (ViewHolder3) convertView.getTag();
                }
                ImageLoader.getInstance().displayImage(list.get(position).getImages().get(0).getU(),holder3.iamgeLogo1);
                holder3.txtTitle.setText(list.get(position).getTitle());
                break;
            case 1:
                if (convertView == null){
                    convertView = View.inflate(context,R.layout.layout_list2,null);
                    holder2 = new ViewHolder2();
                    holder2.iamgeLogo1 = convertView.findViewById(R.id.image_logo);
                    holder2.iamgeLogo2 = convertView.findViewById(R.id.image_logo1);
                    holder2.txtTitle = convertView.findViewById(R.id.txt_title);
                    convertView.setTag(holder2);
                }else {
                    holder2 = (ViewHolder2) convertView.getTag();
                }
                ImageLoader.getInstance().displayImage(list.get(position).getImages().get(0).getU(),holder2.iamgeLogo1);
                ImageLoader.getInstance().displayImage(list.get(position).getImages().get(1).getU(),holder2.iamgeLogo2);
                holder2.txtTitle.setText(list.get(position).getTitle());
                break;
            case 0:
                if (convertView == null){
                    convertView = View.inflate(context,R.layout.layout_list1,null);
                    holder1 = new ViewHolder1();
                    holder1.iamgeLogo1 = convertView.findViewById(R.id.image_logo);
                    holder1.iamgeLogo2 = convertView.findViewById(R.id.image_logo1);
                    holder1.iamgeLogo3 = convertView.findViewById(R.id.image_logo2);
                    holder1.txtTitle = convertView.findViewById(R.id.txt_title);
                    convertView.setTag(holder1);
                }else {
                    holder1 = (ViewHolder1) convertView.getTag();
                }
                ImageLoader.getInstance().displayImage(list.get(position).getImages().get(0).getU(),holder1.iamgeLogo1);
                ImageLoader.getInstance().displayImage(list.get(position).getImages().get(1).getU(),holder1.iamgeLogo2);
                ImageLoader.getInstance().displayImage(list.get(position).getImages().get(2).getU(),holder1.iamgeLogo3);
                holder1.txtTitle.setText(list.get(position).getTitle());
                break;

        }


        return convertView;
    }
    class ViewHolder1{
        ImageView iamgeLogo1;
        ImageView iamgeLogo2;
        ImageView iamgeLogo3;
        TextView txtTitle;
    }
    class ViewHolder2{
        ImageView iamgeLogo1;
        ImageView iamgeLogo2;
        TextView txtTitle;
    }
    class ViewHolder3{
        ImageView iamgeLogo1;
        TextView txtTitle;
    }
    class ViewHolder4{
        TextView txtTitle;
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值