当前位置: 首页 > 知识库问答 >
问题:

创建RecycerView时嵌套ArrayList

杜良骏
2023-03-14

下面的代码是我的适配器

public class CurriculumAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {

    private Context mContext;
    private ArrayList<Curriculum> mArrayListCurriculum;

    public CurriculumAdapter(Context mContext, ArrayList<Curriculum> mArrayListCurriculum) {
        this.mContext = mContext;
        this.mArrayListCurriculum = mArrayListCurriculum;
    }

    @Override
    public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.adapter_key_features, parent,false);
        return new KeyFeatureViewHolder(v);
    }

    @Override
    public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {

        if (holder instanceof KeyFeatureViewHolder) {
            ((KeyFeatureViewHolder) holder).mTextViewFeatureTitle.setText(mArrayListCurriculum.get(position).getTitle());
        }
    }

    @Override
    public int getItemCount() {
        return mArrayListCurriculum == null ? 0 : mArrayListCurriculum.size();
    }

    public static class KeyFeatureViewHolder extends RecyclerView.ViewHolder {

        public TextView mTextViewFeatureTitle;

        public KeyFeatureViewHolder(View itemView) {
            super(itemView);
            mTextViewFeatureTitle = (TextView) itemView.findViewById(R.id.txtFeature);
        }
    }
}

下面的代码是我的片段,带有虚拟arraylist数据

public class CourseCurriculumFragment extends Fragment {

    private FragmentInterface mFragmentInterface;
    private ArrayList<Curriculum> mArrayListCurriculum;
    private ArrayList<Material> mArrayListMaterial;
    private RecyclerView mRecyclerViewCurriculum;
    private LinearLayoutManager mLinearLayoutManager;
    private CurriculumAdapter mCurriculumAdapter;

    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_course_curriculum, container, false);
        return view;
    }

    @Override
    public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);
        initView(view);
    }

    private void initView(View view) {
        mArrayListMaterial = new ArrayList<>();
        mArrayListCurriculum = new ArrayList<>();
        populateMaterials();
        populateKeyFeatures();

        mRecyclerViewCurriculum = (RecyclerView) view.findViewById(R.id.recyclerViewCurriculum);
        mCurriculumAdapter = new CurriculumAdapter(getActivity(), mArrayListCurriculum);
        mLinearLayoutManager = new LinearLayoutManager(getActivity());
        mRecyclerViewCurriculum.setLayoutManager(mLinearLayoutManager);
        mRecyclerViewCurriculum.setAdapter(mCurriculumAdapter);
        mRecyclerViewCurriculum.setItemAnimator(new DefaultItemAnimator());
    }

    private void populateMaterials() {
        mArrayListMaterial.add(new Material("12:00","pdf","","Sample Text","0"));
        mArrayListMaterial.add(new Material("12:00","pdf","","Sample Text","0"));
    }

    private void populateKeyFeatures() {
        mArrayListCurriculum.add(new Curriculum("UNIT 1",mArrayListMaterial));
        mArrayListCurriculum.add(new Curriculum("UNIT 2",mArrayListMaterial));
        mArrayListCurriculum.add(new Curriculum("UNIT 3",mArrayListMaterial));
    }
}

共有1个答案

董和泽
2023-03-14

holder中的bind方法是向其传递数据的好方法。

在您的示例中,bind方法应该接受curroreMaterial对象作为参数

在适配器的onBindViewholder方法中,不应该触及holder的变量,而应该调用这个Bind方法。

在youKeyFeatureViewholder类中实现该方法时,应该使用这些传递的参数,并在适当的UI元素中显示它们。

最后,要将Material对象数据放入适配器中,请添加ArrayList 作为构造函数参数,就像使用Currucle一样。

 类似资料:
  • 下面是我创建的表格。 创建嵌套表时出现以下错误。 ORA-02320:为嵌套表列odetails\u ntab ORA-25175创建存储表失败:找不到主键约束02320。00000-“为嵌套表列%s创建存储表失败”*原因:为指定的嵌套表列创建存储表时出错*操作:有关更多详细信息,请参阅下面的消息。如果他们描述的情况能够得到纠正,那么就这样做;否则请与Oracle支持部门联系。 获取第9行ORA-

  • 问题内容: 说我要制作以下JSON 目前,这就是我实现的方式 似乎应该有一个更好的方法来做到这一点,而不是做更多的事情,然后将它们放置在主体中。有比我正在使用的方法更好的动态构建方法吗? 在此先感谢您的帮助! 问题答案: 如果您处理大量JSON数据,我真的建议您使用Gson或Jackson。这要方便得多,并且两个库都很好地支持与Java对象之间的相互转换(与通过JSONObjects手动构建JSO

  • 问题内容: 我已经阅读了从平面csv创建嵌套JSON的内容,但对我而言没有帮助。 我有一个很大的电子表格,它是由Google文档创建的,包含11行和74列(某些列未占用)。 我在Google云端硬盘上创建了一个示例。导出为a时,它看起来像这样: 现在,我想要一个结构,如下所示: 以此类推。 我的理论方法是逐行遍历文件(这是第一个问题:现在每一行等于一行,但有时是几行,因此我需要计算逗号?)。每行等

  • 谁能告诉我我错过了什么吗?我正在尝试使用spring boot mongodb创建一个Mongo集合。 我想创造这样的东西 但我要得到这个 我的领域类是 我的存储库是 控制器是 我的jsp表格是

  • 了解如何在 Dreamweaver 中创建用于控制共享设计元素的页面中的内容的嵌套模板。 嵌套模板是指其设计和可编辑区域都基于另一个模板的模板。嵌套模板对于控制共享许多设计元素的站点页面中的内容很有用,但在各页之间有些差异。例如,基本模板中可能包含更宽广的设计区域,并且可以由站点的许多内容提供者使用,而嵌套模板可能进一步定义站点内特定部分的页面中的可编辑区域。 基本模板中的可编辑区域被传递到嵌套模

  • 我必须使用elasticsearch和python为需要索引的json数据创建索引。例如,我有一个嵌套数组[[39.909971141540645,1452077285.150548,1452077286.196072,1.0455241203308105]]我需要为这个数组定义一个映射,比如第一个字段是count,第二个字段是start_time,end_time,duration。请帮助说明如