PullListView 的适配器......

本文介绍了一种使用自定义BaseAdapter处理不同视图类型的Android应用适配器实现方法,通过判断数据中特定字段来决定加载哪种布局,同时展示了ViewHolder模式优化UI组件复用。

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

public class MainAdapter extends BaseAdapter {
    private Context context;
    private List<MainBean.ResultBean.DataBean> dataBeanList;

    public MainAdapter(Context context, List<MainBean.ResultBean.DataBean> dataBeanList) {
        this.context = context;
        this.dataBeanList = dataBeanList;
    }

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

    @Override
    public MainBean.ResultBean.DataBean getItem(int position) {
        return dataBeanList.get(position);
    }

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


    @Override
    public int getItemViewType(int position) {
        if (!TextUtils.isEmpty(dataBeanList.get(position).getThumbnail_pic_s03())){
            return view_type_two;
        }else {
            return view_type_one;
        }
    }

    @Override
    public int getViewTypeCount() {
        return super.getViewTypeCount() +3;
    }


    private final int view_type_one = 1;
    private final int view_type_two = 2;
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        int viewType = getItemViewType(position);
        switch (viewType) {
            case view_type_one:
                ViewHolderOne holderOne = null;
                if (convertView == null) {
                    holderOne = new ViewHolderOne();
                    convertView = LayoutInflater.from(context).inflate(R.layout.item_one, null, false);
                    holderOne.text_title = convertView.findViewById(R.id.tv_title);
                    holderOne.img_icon = convertView.findViewById(R.id.iv_image);
                    convertView.setTag(holderOne);
                }else {
                    holderOne = (ViewHolderOne) convertView.getTag();
                }
                holderOne.text_title.setText(dataBeanList.get(position).getTitle());
                ImageLoader.getInstance().displayImage(dataBeanList.get(position).getThumbnail_pic_s           (),holderOne.img_icon);
                break;

            case view_type_two:
                ViewHolderTwo holderTwo = null;
                if (convertView == null){
                    holderTwo = new ViewHolderTwo();
                    convertView = LayoutInflater.from(context).inflate(R.layout.item_two,null,false);
                    holderTwo.text_title = convertView.findViewById(R.id.tv_title);
                    holderTwo.img_icon = convertView.findViewById(R.id.iv_image);
                    holderTwo.img_icon2 = convertView.findViewById(R.id.iv_image2);
                    holderTwo.img_icon3 = convertView.findViewById(R.id.iv_image3);
                    convertView.setTag(holderTwo);
                }else {
                    holderTwo = (ViewHolderTwo) convertView.getTag();
                }

                holderTwo.text_title.setText(dataBeanList.get(position).getTitle());
                ImageLoader.getInstance().displayImage(dataBeanList.get(position).getThumbnail_pic_s           (),holderTwo.img_icon);
                ImageLoader.getInstance().displayImage(dataBeanList.get(position).getThumbnail_pic_s02           (),holderTwo.img_icon2);
                ImageLoader.getInstance().displayImage(dataBeanList.get(position).getThumbnail_pic_s03           (),holderTwo.img_icon3);
                break;
        }
        return convertView;
    }

        class ViewHolderOne {
            private TextView text_title;
            private ImageView img_icon;
        }

        class ViewHolderTwo {
            private TextView text_title;
            private ImageView img_icon;
            private ImageView img_icon2;
            private ImageView img_icon3;
        }
    }

<布局one>

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">
    
    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/tv_title"/>

    <ImageView
        android:layout_width="match_parent"
        android:layout_height="200dp"
        android:id="@+id/iv_image"
        android:layout_below="@id/tv_title"/>

</RelativeLayout>

<布局two>

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">
    
    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/tv_title"/>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@id/tv_title"
        android:orientation="horizontal">

        <ImageView
            android:layout_width="0dp"
            android:layout_height="200dp"
            android:id="@+id/iv_image"
            android:layout_weight="1"/>

        <ImageView
            android:layout_width="0dp"
            android:layout_height="200dp"
            android:id="@+id/iv_image2"
            android:layout_weight="1"/>

        <ImageView
            android:layout_width="0dp"
            android:layout_height="200dp"
            android:id="@+id/iv_image3"
            android:layout_weight="1"/>


    </LinearLayout>



</RelativeLayout>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值