0

这不像问题,更像是讨论

我正在使用这个库中的刷卡 'link.fls:swipestack:0.3.0'

在这些卡片的帮助下,我正在为每张卡片创建回收视图,但每张卡片的数据都在重复

我已经使用适配器来生成卡片,并且在这个适配器内部我已经初始化了回收视图

所以我的问题是如何对这些刷卡使用回收视图,每张卡上都有非重复值......

这是第一张卡

这是第二张具有相同重复数据的卡片

提前致谢

适配器代码

public class ParentExamsCardAdapter extends BaseAdapter {

private Context mContext;
private List<ParentExamCards_Pojo> parentExamCardsPojoList = new ArrayList<>();

private RecyclerView recyclerView;

private ParentExamsDataAdapter dataAdapter;


public ParentExamsCardAdapter(Context mContext, List<ParentExamCards_Pojo> parentExamCardsPojoList, ParentExamsDataAdapter dataAdapter) {
    this.mContext = mContext;
    this.parentExamCardsPojoList = parentExamCardsPojoList;
    this.dataAdapter = dataAdapter;
}

@Override
public int getCount() {
    return parentExamCardsPojoList.size();
}

@Override
public Object getItem(int i) {
    return i;
}

@Override
public long getItemId(int i) {
    return i;
}

@Override
public View getView(int position, View view, ViewGroup viewGroup) {
    View itemView = LayoutInflater.from(mContext).inflate(R.layout.single_parent_exams_swipecards, viewGroup, false);

    ParentExamCards_Pojo pojoCards = parentExamCardsPojoList.get(position);

    CardView cardView = itemView.findViewById(R.id.singleParentExamsCards_cardView);
    LinearLayout linearLayout = itemView.findViewById(R.id.singleParentExamsCards_linear);
    TextView textView_Title = itemView.findViewById(R.id.singleParentExamsCards_txtTitle);

    cardView.setBackgroundColor(pojoCards.getColor());
    textView_Title.setText(pojoCards.getExamname());

    recyclerView = itemView.findViewById(R.id.singleParentExamsCards_recycleView);

    RecyclerView.LayoutManager layoutManager = new LinearLayoutManager(mContext);
    recyclerView.setLayoutManager(layoutManager);
    recyclerView.setItemAnimator(new DefaultItemAnimator());
    recyclerView.addItemDecoration(new DividerItemDecoration(mContext, LinearLayoutManager.VERTICAL));
    recyclerView.setAdapter(dataAdapter);


    return itemView;
}

@Override
public int getItemViewType(int position) {
    return position;
}

}

ParentExamsDataAdapter

public class ParentExamsDataAdapter  extends RecyclerView.Adapter<ParentExamsDataAdapter.MyViewHolder>{
private Context mContext;
private List<List<ParentExams_Pojo>> parentExamsPojoDataList = new ArrayList<>();

public ParentExamsDataAdapter(Context mContext, List<List<ParentExams_Pojo>> parentExamsPojoDataList) {
    this.mContext = mContext;
    this.parentExamsPojoDataList = parentExamsPojoDataList;
}

public class MyViewHolder extends RecyclerView.ViewHolder {
    TextView textView_name;
    TextView textView_date;
    TextView textView_time;
    public MyViewHolder(View itemView) {
        super(itemView);

        textView_name=itemView.findViewById(R.id.singleParentExamsData_txtName);
        textView_date=itemView.findViewById(R.id.singleParentExamsData_txtDate);
        textView_time=itemView.findViewById(R.id.singleParentExamsData_txtTime);
    }
}

@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    View view = LayoutInflater.from(mContext).inflate(R.layout.single_parent_exams_data, parent, false);
    return new MyViewHolder(view);
}

@Override
public void onBindViewHolder(MyViewHolder holder, int position) {
    ParentExams_Pojo pojoData=parentExamsPojoDataList.get(position).get(position);
    holder.textView_name.setText(pojoData.getSubjectname()+"-"+pojoData.getSubjectaspectname());
    holder.textView_date.setText(pojoData.getExamdate());
    holder.textView_time.setText(pojoData.getStarttime());
}

@Override
public int getItemCount() {
    return parentExamsPojoDataList.size();
}

}

4

2 回答 2

2

基本上你必须adapter(ParentExamsDataAdapter(exams[position].getmarks))getview(). ParentExamCardAdapter这里的问题是您从 Activity 或 Fragment 向您的父适配器发送一个适配器实例,我猜。您正在为每个 CardAdapter 进行设置。

编辑: 将建议的代码更改从评论添加到答案。

RecyclerView.LayoutManager layoutManager = new LinearLayoutManager(mContext);
recyclerView.setLayoutManager(layoutManager);
recyclerView.setItemAnimator(new DefaultItemAnimator());     
recyclerView.addItemDecoration(new DividerItemDecoration(mContext, LinearLayoutManager.VERTICAL));     
recyclerView.setAdapter(new ParentExamsDataAdapter(**list of items**));
于 2018-06-22T13:35:50.637 回答
0

找到了解决方案,您将相同的适配器传递给每张卡中的每个 recyclerview,这是您在 ParentExamsCardAdapter recyclerView.setAdapter(dataAdapter) 中出现问题的原因之一; 数据适配器对于每个位置都是相同的,arraylist 值对于 aa recyclerview 是相同的

List List ParentExams_Pojo arraylist 传递给 ParentExamsCardAdapter 在 getItemCount 中使用它的大小,然后在 onbindviewholder 中使用 arraylist.get(position) 传递给适配器,然后在适配器中使用List ParentExams_Pojo来获取列表及其在 getitemcount 中的大小它会解决我认为

因此您在 adapyter ParentExams_Pojo pojoData=parentExamsPojoDataList.get(position)中只有 1 个位置

于 2018-06-22T05:29:56.613 回答