如何在Android中显示数据表单列表和子列表

问题描述

我试图在recyclerview(child)中创建一个recyclerview(parent),两个列表中的所有数据都来自edittext,我想问什么,我如何同时使用这两个数据并在主recyclerview中显示它们? >

ItemParent.Java

public class ImpianItem {

private String txImpian;
private List<KebiasaanItem> itemList;

public String getTxImpian() {
    return txImpian;
}

public void setTxImpian(String txImpian) {
    this.txImpian = txImpian;
}

public List<KebiasaanItem> getItemList() {
    return itemList;
}

public void setItemList(List<KebiasaanItem> itemList) {
    this.itemList = itemList;
}

public ImpianItem(String txImpian,List<KebiasaanItem> itemList) {
    this.txImpian = txImpian;
    this.itemList = itemList;
}
}

AdapterParent.Java

public class ImpianAdapter extends RecyclerView.Adapter<ImpianAdapter.ImpianHolder> {

private RecyclerView.RecycledViewPool viewPool = new RecyclerView.RecycledViewPool();
private List<ImpianItem> itemList;

public ImpianAdapter(List<ImpianItem> itemList) {
    this.itemList = itemList;
}

@NonNull
@Override
public ImpianAdapter.ImpianHolder onCreateViewHolder(@NonNull ViewGroup parent,int viewType) {
    View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.add_impian_item,parent,false);

    return new ImpianHolder(view);
}

@Override
public void onBindViewHolder(@NonNull ImpianAdapter.ImpianHolder holder,int position) {
    ImpianItem item = itemList.get(position);
    holder.tximpian.setText(item.getTxImpian());

    linearlayoutmanager layoutManager = new linearlayoutmanager(holder.rvhabits.getContext(),linearlayoutmanager.VERTICAL,false);
    layoutManager.setinitialPrefetchItemCount(item.getItemList().size());
    KebiasaanAdapter kebiasaanAdapter = new KebiasaanAdapter(item.getItemList());
    holder.rvhabits.setLayoutManager(layoutManager);
    holder.rvhabits.setAdapter(kebiasaanAdapter);
    holder.rvhabits.setRecycledViewPool(viewPool);

}

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

public class ImpianHolder extends RecyclerView.ViewHolder {

    TextView tximpian;
    RecyclerView rvhabits;

    public ImpianHolder(@NonNull View itemView) {
        super(itemView);

        tximpian = itemView.findViewById(R.id.impian);
        rvhabits = itemView.findViewById(R.id.rv_kebiasaan);
    }
}
}

ParentChildFragment.Java

public View onCreateView(LayoutInflater inflater,ViewGroup container,Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    View view = inflater.inflate(R.layout.fragment_aktif,container,false);

    RecyclerView rvParent = view.findViewById(R.id.rv_impian_list);
    linearlayoutmanager managerParent = new linearlayoutmanager(getActivity());

    ImpianAdapter impianAdapter = new ImpianAdapter(itemParent);
    rvParent.setAdapter(impianAdapter);
    rvParent.setLayoutManager(managerParent);

    RecyclerView rvChild = view.findViewById(R.id.rv_kebiasaan);
    linearlayoutmanager managerChild = new linearlayoutmanager(getActivity());

    KebiasaanAdapter kebiasaanAdapter = new KebiasaanAdapter(itemChild);
    rvChild.setLayoutManager(managerChild);
    rvChild.setAdapter(kebiasaanAdapter);

    return view;
}

这是两个列表的项目变量

List<ImpianItem> itemParent = new ArrayList<>();
List<KebiasaanItem> itemChild = new ArrayList<>();

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)