CymChad / CymChad/BaseRecyclerViewAdapterHelper
BaseMultiItemQuickAdapter上拉3次后,开始卡顿
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
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- 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