CymChad / CymChad/BaseRecyclerViewAdapterHelper

BaseMultiItemQuickAdapter上拉3次后,开始卡顿

Open
#3,315 2 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Kotlin
Stars
24.6k
Forks
5.2k
PR merge metrics
No merged PRs in 30d

Description

我这里使用了BaseMultiItemQuickAdapter多布局,有5个item类型,而且5个item高度不一样,首次获取20条数据流畅 ,上拉3次后,60条数据就开始卡顿,很卡顿,我对代码和布局都优化了下,还是出现这问题,item只是文字和图片结合的
public HomeDiscoveAdapter(List<HomeDiscoverListEntity> data) { super(data); /** * contentTypeId: 520 视频 521 文章 522 音频 523 文档 524 活动 * docTypeId: 533 word 534 excle 535 ppt 536 pdf */ addItemType(TYPE_VIDEO, R.layout.item_layout_home_video); addItemType(TYPE_ARTICLE, R.layout.item_layout_home_article); addItemType(TYPE_VOICE, R.layout.item_layout_home_voice); addItemType(TYPE_ACTION, R.layout.item_layout_home_action); addItemType(TYPE_FILE, R.layout.item_layout_home_file); }

covert

`@Override
protected void convert(@NotNull BaseViewHolder holder, HomeDiscoverListEntity entity) {
int type = entity.getContentTypeId();
switch (type) {
case TYPE_VIDEO:
setCommon(holder, entity);
//視頻
holder.setText(R.id.tv_play_count, entity.getPlayTimes());
holder.setText(R.id.home_duration, DateUtil.formatTiming(entity.getFileDuration()));
holder.setImageResource(R.id.iv_play_icon, R.drawable.iv_play_video);
GlideUtil.displayImage(getContext(), entity.getCoverUrl(), holder.getView(R.id.roundedimageview));
break;
//图文要分不同布局
case TYPE_ARTICLE:
//文章
showImage(entity, holder);

            break;
        case TYPE_VOICE:
            //音頻
            setCommon(holder, entity);
            holder.setText(R.id.tv_play_count, entity.getPlayTimes());
            holder.setImageResource(R.id.iv_play_icon, R.drawable.iv_play_video);
            GlideUtil.displayImage(getContext(), entity.getCoverUrl(), holder.getView(R.id.roundedimageview));
            break;
        case TYPE_FILE:
            //文档要分不同的类型
            setCommon(holder, entity);
            holder.setText(R.id.tv_play_count, entity.getPv());
            int docTypeId = (int) entity.getDocTypeId();
            holder.setImageResource(R.id.iv_play_icon, R.drawable.iv_see);
            switch (docTypeId) {
                case 533:
                    holder.setImageResource(R.id.iv_file_format, R.drawable.iv_doc);
                    break;
                case 534:
                    holder.setImageResource(R.id.iv_file_format, R.drawable.iv_excel);
                    break;
                case 535:
                    holder.setImageResource(R.id.iv_file_format, R.drawable.iv_ppt);
                    break;
                case 536:
                    holder.setImageResource(R.id.iv_file_format, R.drawable.iv_pdf);
                    break;
            }
            break;
        case TYPE_ACTION:
            setCommon(holder, entity);
            holder.setText(R.id.tv_play_count, entity.getPv());
            String str = DateUtil.formatTime(entity.getBeginTime(), DateUtil.HMS_PATTERN_8, DateUtil.HMS_PATTERN_9);
            holder.setText(R.id.home_video_duration, str + "    开始");
            holder.setText(R.id.home_video_address, CommonStringUtil.limit("地点:"+entity.getAddress(), 17));
            GlideUtil.displayImage(getContext(), entity.getCoverUrl(), holder.getView(R.id.roundedimageview));
            holder.setImageResource(R.id.iv_play_icon, R.drawable.iv_see);
            break;
        default:
            break;
    }
}`

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start from the BaseMultiItemQuickAdapter convert implementation shown in the issue, including its five item types and Glide image-loading calls. Profile scrolling after loading 60 items to identify what causes the jank; done means scrolling remains smooth and the cause is confirmed with a reproducible comparison.

Written by the indexing model from the issue text.

Assessment

Tech stack
android, java
Domain
mobile-dev, performance
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.