Android---ListAdapter

本文探讨了Android中ListAdapter和RecyclerView.Adapter的区别。ListAdapter示例代码显示其基础用法,而RecyclerView.Adapter增加了泛型和特定构造方法。在内容比较时,Kotlin代码展示了如何处理字符串的equals方法。

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

这片主要写的是ListAdapter和RecycleAdapter的比较:

ListAdapter基本代码:

public class TestAdapter extends ListAdapter<Integer,TestAdapter.MyViewHolder> {


    //这个是用来处理两个列表差别的,差异化处理化的回调。
    //列表数据的差异化处理是后台异步进行的
    public TestAdapter(){
        super(new DiffUtil.ItemCallback<Integer>() {
            /**
             * 比较列表中的两个元素是否相同
             * @param oldItem
             * @param newItem
             * @return
             */
            @Override
            public boolean areItemsTheSame(@NonNull Integer oldItem, @NonNull Integer newItem) {
                return oldItem==newItem;
            }

            /**
             * 比较列表中的两个内容是否相同
             * @param oldItem
             * @param newItem
             * @return
             */
            @Override
            public boolean areContentsTheSame(@NonNull Integer oldItem, @NonNull Integer newItem) {
                return false;
            }
        });

    }


    @NonNull
    @Override
    public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {

        return null;
    }

    @Override
    public void onBindViewHolder(@NonNull MyViewHolder holder, int position) {

    }

    public class MyViewHolder extends RecyclerView.ViewHolder {

        public MyViewHolder(@NonNull View itemView) {
            super(itemView);
        }
    }

}

RecycleAdapter基本代码:

public class TestAdapter extends RecyclerView.Adapter<TestAdapter.MyViewHolder> {


    @NonNull
    @Override
    public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        return null;
    }

    @Override
    public void onBindViewHolder(@NonNull MyViewHolder holder, int position) {

    }

    @Override
    public int getItemCount() {
        return 0;
    }

    public class MyViewHolder extends RecyclerView.ViewHolder {
        public MyViewHolder(@NonNull View itemView) {
            super(itemView);
        }
    }
}

相比较的话,ListAdapter没有

    @Override
    public int getItemCount() {
        return 0;
    }

添加了:

public class TestAdapter extends ListAdapter<Integer,TestAdapter.MyViewHolder> 

泛型第一个参数是需要展示数据类型,这里随便写了个Integer

还有就是构造方法里面需要写一个:

 super(new DiffUtil.ItemCallback<Integer>() {
            /**
             * 比较列表中的两个元素是否相同
             * @param oldItem
             * @param newItem
             * @return
             */
            @Override
            public boolean areItemsTheSame(@NonNull Integer oldItem, @NonNull Integer newItem) {
                return oldItem==newItem;
            }

            /**
             * 比较列表中的两个内容是否相同
             * @param oldItem
             * @param newItem
             * @return
             */
            @Override
            public boolean areContentsTheSame(@NonNull Integer oldItem, @NonNull Integer newItem) {
                return oldItem==newItem;
            }
        });

比较内容的话,如果是字符串就可以用equals


Kotlin代码例子:

class PagerPhotoListAdapter: ListAdapter<PhotoItem, PagerPhotoViewHolder>(DiffCallback) {

    object DiffCallback:DiffUtil.ItemCallback<PhotoItem>(){
        override fun areItemsTheSame(oldItem: PhotoItem, newItem: PhotoItem): Boolean {
            return oldItem === newItem
        }

        override fun areContentsTheSame(oldItem: PhotoItem, newItem: PhotoItem): Boolean {
            TODO("Not yet implemented")
        }

    }


    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): PagerPhotoViewHolder {
        TODO("Not yet implemented")
    }

    override fun onBindViewHolder(holder: PagerPhotoViewHolder, position: Int) {
        TODO("Not yet implemented")
    }

}


class PagerPhotoViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值