RecyclerView简单记录

Android  小知识  2024年3月2日 pm5:30发布1个月前更新 城堡大人
121 0 0

前言

简单记录一下RecyclerView的使用,记录于此方便自己查阅。

正文

这里只是简单记录一下。

xml

<androidx.recyclerview.widget.RecyclerView
    android:id="@+id/list_rv_view"
    android:layout_width="1000dp"
    android:layout_height="600dp"
    android:layout_weight="1" />

java

ItemAdapter

适配器

public class MediaAdapter extends RecyclerView.Adapter<MediaAdapter.ViewHolder> {
    private List<FileInfo> mList = new ArrayList<>();
    
    @NonNull
    @Override
    public MediaAdapter.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        return new ViewHolder(LayoutInflater.from(MediaApp.getContext()).inflate(R.layout.layout_item_media, parent, false));
    }

    @Override
    public void onBindViewHolder(@NonNull MediaAdapter.ViewHolder holder, int position) {
        if (getItemCount() > 0) {
            //略
        }
    }

    @Override
    public int getItemCount() {
        return mList.size();
    }

    @SuppressLint("NotifyDataSetChanged")
    public void updateList(List<FileInfo> list) {
        if (list == null || list.isEmpty()) {
            mList.clear();
        } else {
            mList = new ArrayList<>(list);
        }
        notifyDataSetChanged();
    }

    public static class ViewHolder extends RecyclerView.ViewHolder {
        private final ImageView mIvIcon;
        private final TextView mTvName;

        public ViewHolder(@NonNull View itemView) {
            super(itemView);
            mIvIcon = itemView.findViewById(R.id.item_iv_icon);
            mTvName = itemView.findViewById(R.id.item_tv_name);
        }
    }
}

LinearLayoutManager

private RecyclerView mRecyclerView;
private LinearLayoutManager mLinearLayoutManager;

mRecyclerView = mRootView.findViewById(R.id.list_rv_view);

//线性垂直显示
mLinearLayoutManager = new LinearLayoutManager(MusicApp.getContext());
mLinearLayoutManager.setOrientation(LinearLayoutManager.VERTICAL);
mRecyclerView.addItemDecoration(new DividerItemDecoration(MusicApp.getContext(), DividerItemDecoration.VERTICAL));
mRecyclerView.setLayoutManager(mLinearLayoutManager);
mRecyclerView.setAdapter(mItemAdapter);

GridLayoutManager

 mMediaAdapter = new MediaAdapter();
 //一行6个
 mRecyclerView.setLayoutManager(new GridLayoutManager(MediaApp.getContext(), 6));
 mRecyclerView.setAdapter(mItemAdapter);
指定间距

需要重写RecyclerView.ItemDecoration

public class SpacesItemDecoration extends RecyclerView.ItemDecoration {
    private final int left, top, right, bottom;

    public SpacesItemDecoration(int left, int top, int right, int bottom) {
        this.left = left;
        this.top = top;
        this.right = right;
        this.bottom = bottom;
    }

    @Override
    public void getItemOffsets(Rect outRect, @NonNull View view, @NonNull RecyclerView parent, @NonNull RecyclerView.State state) {
        //看需求修改
        outRect.bottom = bottom;
        outRect.left = left;
        outRect.right = right;
        outRect.top = top;
    }
}

设置一下即可。

mRecyclerView.addItemDecoration(new SpacesItemDecoration(30, 30, 30, 30));

滚动指定位置

//position是指定位置
//方式一
mRecyclerView.scrollToPosition(position);
//方式二
mLinearLayoutManager.scrollToPosition(position);
//方式三
//position是指定位置 ,y是固定高度位置
mLinearLayoutManager.scrollToPositionWithOffset(position, y);

参考文章

  1. 个人常用的ListView方法简介

 历史上的今天

  1. 2023: Android静态换肤-日夜主题切换之继承Activity记录(0条评论)
  2. 2022: [摘]查找当前目录下所有文件某一行的内容(0条评论)
版权声明 1、 本站名称: 笔友城堡
2、 本站网址: https://www.biumall.com/
3、 本站部分文章来源于网络,仅供学习与参考,如有侵权,请留言

暂无评论

暂无评论...

随机推荐

余光中:绝色

美丽而善变的巫娘,那月亮翻译是她的特长却把世界译走了样 把太阳的鎔金译成了流银把烈火译成了冰而且带点薄荷的风味 凡尝过的人都说译文是全不可靠但比起原文来呢却更加神秘,更加美 雪是另一位唯美的译者存心把世界译错或者译对,诗人说只因原文本来就...

林夕:赏味期限

那还是你和好友说着想要去很多很多地方的年纪。你踢踢踏踏地在走廊里面一边走一边数着自己到底想去多少个地方,好友跟在你的后面臭着一张脸喊,好高骛远的家伙,离开这里看谁天天陪你。你转身去拉她的手,笑得相当谄媚,说你可以陪我一起去呀。好友摇着手告诉你去去去,先把英文考及格了再说吧。所谓好友到底可以好成...

[摘]Android 系统重启原因分析

前言Android重启,这种影响使用的问题必须解决和找出原因。正文以下是摘抄文章内容,略有删减。重启原因分类上层造成重启system_server被杀watchdog重启重要线程阻塞kernel造成重启空指针非法地址kernel watchdog造成重启,...

郁达夫:北平的四季

对于一个已经化为异物的故人,追怀起来,总要先想到他或她的好处;随后再慢慢的想想,则觉得当时所感到的一切坏处,也会变作很可寻味的一些纪念,在回忆里开花。关于一个曾经住过的旧地,觉得此生再也不会第二次去长住了,身处入了远离的一角,向这方向的云天遥望一下,回想起来的,自然也同样地只是它的好处。中国的大都...

铁凝:幸福就在此刻

去探望一位生病的友人,聊起很多从前的事情,计划很多未来的事情,她忽然发问:对于你来说,幸福的时刻是什么?想了半天,竟然没有一个很适合的答案。那阵子,经常携带这个难题去和人打交道,不管是新朋还是故友,聊到酣畅总是抛出这个问题冷场,当然,收获的答案也是五花八门——有人说,幸福的时刻就是加官晋爵时买房...

Android的软解码和硬解码

在MediaCodec里有接口可以枚举所有解码格式,每种编码可能都有多个解码器。MediaCodec mediaCodec = MediaCodec.createDecoderByType("video/avc");我的应用里面接收的是H264编码数据,所以我选取的是video/avc,我们...