android–Recyclerview滚动时更改项目

android–Recyclerview滚动时更改项目,第1张

概述有人可以向我解释,问题是什么?当我向下滚动然后回到顶部时,我的项目更改为列表中的其他项目,如果我再次滚动,则会再次更改项目.这是我的适配器.publicclassAcademicAdapterextendsRecyclerView.Adapter<AcademicAdapter.AcademicVH>{privateLayoutInflaterinflate

有人可以向我解释,问题是什么?

当我向下滚动然后回到顶部时,我的项目已更改为列表中的其他项目,如果我再次滚动,则会再次更改项目.

这是我的适配器.

public class AcademicAdapter extends RecyclerVIEw.Adapter<AcademicAdapter.AcademicVH> {    private LayoutInflater inflater;    private List<AcademicStatus> data;public AcademicAdapter(List<AcademicStatus> data) {    this.data = data;}@OverrIDepublic AcademicVH onCreateVIEwHolder(VIEwGroup parent, int vIEwType) {    inflater = LayoutInflater.from(parent.getContext());    VIEw vIEw = inflater.inflate(R.layout.row_academic_level, parent, false);    return new AcademicVH(vIEw);}@OverrIDepublic voID onBindVIEwHolder(AcademicVH holder, int position) {    VIEw vIEw = inflater.inflate(R.layout.row_container_academic_level, holder.containerData, false);    TextVIEw txtSubject = (TextVIEw) vIEw.findVIEwByID(R.ID.txtSubjectValue);    TextVIEw txtGroup = (TextVIEw) vIEw.findVIEwByID(R.ID.txtGroupValue);    TextVIEw txtStatus = (TextVIEw) vIEw.findVIEwByID(R.ID.txtStatusValue);    TextVIEw txtFinalNote = (TextVIEw) vIEw.findVIEwByID(R.ID.txtFinalNoteValue);    TextVIEw txtYear = (TextVIEw) vIEw.findVIEwByID(R.ID.txtYearValue);    txtSubject.setText(data.get(position).getSubject());    txtGroup.setText(data.get(position).getGroup());    txtStatus.setText(data.get(position).getStatus());    txtFinalNote.setText(data.get(position).getFinalNote());    txtYear.setText(data.get(position).getAcademicYear());    holder.containerData.addVIEw(vIEw);}@OverrIDepublic int getItemCount() {    return data.size();}public static class AcademicVH extends RecyclerVIEw.VIEwHolder {    private linearLayout containerData;    public AcademicVH(VIEw itemVIEw) {        super(itemVIEw);        containerData = (linearLayout) itemVIEw.findVIEwByID(R.ID.containerData);    }}}

解决方法:

尝试初始化您在RecyclerVIEw.VIEwHolder上的视图并在onCreateVIEwHolder()上扩充您的布局,并且不要再次在onBindVIEwHolder()中扩充布局.

public class AcademicAdapter extends RecyclerVIEw.Adapter<AcademicAdapter.AcademicVH> {    private LayoutInflater inflater;    private List<AcademicStatus> data;public AcademicAdapter(List<AcademicStatus> data) {    this.data = data;}@OverrIDepublic AcademicVH onCreateVIEwHolder(VIEwGroup parent, int vIEwType) {    VIEw mVIEw = LayoutInflater.from(parent.getContext()).inflate(R.layout.row_academic_level, parent, false);    AcademicVH mVIEwHold = new VIEwHolder(mVIEw);    return mVIEwHold;}@OverrIDepublic voID onBindVIEwHolder(AcademicVH holder, int position) {     final AcademicStatus mItems=this.data.get(position);    holder.txtSubject.setText(mItems.getSubject());    holder.txtGroup.setText(mItems.getGroup());    holder.txtStatus.setText(mItems.getStatus());    holder.txtFinalNote.setText(mItems.getFinalNote());    holder.txtYear.setText(mItems.getAcademicYear());}@OverrIDepublic int getItemCount() {    return data.size();}public static class AcademicVH extends RecyclerVIEw.VIEwHolder {    public linearLayout containerData;    public TextVIEw txtSubject,txtGroup,txtStatus,txtFinalNote,txtYear;    public AcademicVH(VIEw itemVIEw) {        super(itemVIEw);        containerData = (linearLayout) itemVIEw.findVIEwByID(R.ID.containerData);        txtSubject = (TextVIEw) itemVIEw.findVIEwByID(R.ID.txtSubjectValue);        txtGroup = (TextVIEw) itemVIEw.findVIEwByID(R.ID.txtGroupValue);        txtStatus = (TextVIEw) itemVIEw.findVIEwByID(R.ID.txtStatusValue);        txtFinalNote = (TextVIEw) itemVIEw.findVIEwByID(R.ID.txtFinalNoteValue);        txtYear = (TextVIEw) itemVIEw.findVIEwByID(R.ID.txtYearValue);    }}}
总结

以上是内存溢出为你收集整理的android – Recyclerview滚动时更改项目全部内容,希望文章能够帮你解决android – Recyclerview滚动时更改项目所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1119790.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-29
下一篇2022-05-29

发表评论

登录后才能评论

评论列表(0条)

    保存