
有人可以向我解释,问题是什么?
当我向下滚动然后回到顶部时,我的项目已更改为列表中的其他项目,如果我再次滚动,则会再次更改项目.
这是我的适配器.
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滚动时更改项目所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)