Recyclerview滚动时更改的项目 [英] Recyclerview changing items when is scrolled

查看:58
本文介绍了Recyclerview滚动时更改的项目的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

Can someone explain to me, what the problem is?

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

When I scroll down and then back to the top, my items were changed for other items in the list, and if I scroll again, the items again are changed.

这是我的适配器.

public class AcademicAdapter extends RecyclerView.Adapter<AcademicAdapter.AcademicVH> {
    private LayoutInflater inflater;
    private List<AcademicStatus> data;

public AcademicAdapter(List<AcademicStatus> data) {
    this.data = data;
}

@Override
public 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);
}

@Override
public 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);
}

@Override
public 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()上再次增加布局.

Try to initialize your view on RecyclerView.ViewHolder and inflate your layout on onCreateViewHolder() and don't inflate again the layout in onBindViewHolder().

public class AcademicAdapter extends RecyclerView.Adapter<AcademicAdapter.AcademicVH> {
    private LayoutInflater inflater;
    private List<AcademicStatus> data;

public AcademicAdapter(List<AcademicStatus> data) {
    this.data = data;
}

@Override
public 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;
}

@Override
public 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());

}

@Override
public 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);
    }
}
}

这篇关于Recyclerview滚动时更改的项目的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆