嵌套的回收瓶没有反应以通知函数

发布于 2025-02-07 09:18:01 字数 19426 浏览 4 评论 0原文

在Recyclerview中使用嵌套的Recyclerview时,我有问题。在我的父循环中,我正在显示成排的项目。这些行有扫描的货物。如果我想显示扫描行,我单击父循环库,然后扩展。当我点击孩子recyclerview时,它应该显示编辑/删除按钮而不是错误消息。在缩小父回收库(再次点击)并再次将其展开之前,请通知工作。目前,通知不会触发bindviewholder。

有人知道该怎么办吗?

父片段

public class ShowCdlFragment extends Fragment {

private FragmentShowCdlBinding binding;
private Resources res;
private SessionManager session;
private Bundle params;

private F1002dlh f1002dlh;


@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    this.binding = FragmentShowCdlBinding.inflate(getLayoutInflater());

    this.session = new SessionManager(getContext());

    this.res = getResources();

    this.session.checkLogin(getActivity());

    // Inflate the layout for this fragment
    return this.binding.getRoot();
}

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

    this.params = getArguments();
    this.f1002dlh = this.params.getParcelable("F1002DLH");

    RecyclerView rvMenu = (RecyclerView) binding.showCdlRecyclerView;

    ArrayList<F1002dlr> f1002dlrArrayList = this.f1002dlh.getF1002dlh_f1002dlrs();
    CdlAdapter cdlAdapter = new CdlAdapter(f1002dlrArrayList, getContext());

    rvMenu.setAdapter(cdlAdapter);
    rvMenu.setLayoutManager(new LinearLayoutManager(this.getContext()));
}

}

parent apapter

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

private List<F1002dlr> f1002dlrList;
private Context context;

private Integer expandedPosition = -1;

private RecyclerView.RecycledViewPool recycledViewPool;
private RecyclerView cdlItem_sub_recyclerView;

public CdlAdapter(List<F1002dlr> f1002dlrList, Context context) {
    this.f1002dlrList = f1002dlrList;
    this.context = context;

    this.recycledViewPool = new RecyclerView.RecycledViewPool();
}

@NonNull
@Override
public CdlAdapter.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
    Context context = parent.getContext();
    LayoutInflater inflater = LayoutInflater.from(context);

    View cdlView = inflater.inflate(R.layout.cdl_item, parent, false);

    return new ViewHolder(cdlView);
}


@Override
public void onBindViewHolder(@NonNull CdlAdapter.ViewHolder holder, int position) {
    F1002dlr f1002dlr = f1002dlrList.get(position);

    ImageView f1002dlr_status_imageView = holder.f1002dlr_status_imageView;
    TextView f1002dlr_vpd_textView = holder.f1002dlr_vpd_textView;
    TextView f1002dlr_radek_textView = holder.f1002dlr_radek_textView;
    TextView f1002dlr_komodita_textView = holder.f1002dlr_komodita_textView;
    TextView f1002dlr_xvyr_textView = holder.f1002dlr_xvyr_textView;
    TextView f1002dlr_jakost_textView = holder.f1002dlr_jakost_textView;
    TextView f1002dlr_mnozstvi_textView = holder.f1002dlr_mnozstvi_textView;
    TextView f1002dlr_vady_textView = holder.f1002dlr_vady_textView;
    TextView f1002dlr_mj_textView = holder.f1002dlr_mj_textView;
    TextView f1002dlr_hodnota_textView = holder.f1002dlr_hodnota_textView;
    TextView f1002dlr_pc_textView = holder.f1002dlr_pc_textView;

    f1002dlr_status_imageView.setImageResource(getImageId(f1002dlr.getStatus()));
    f1002dlr_vpd_textView.setText(f1002dlr.getF1002dlr_vpd().toString());
    f1002dlr_radek_textView.setText(f1002dlr.getF1002dlr_radek().toString());
    f1002dlr_komodita_textView.setText(f1002dlr.getF1002dlr_komodita());
    f1002dlr_xvyr_textView.setText(f1002dlr.getF1002dlr_xvyr().toString());
    f1002dlr_jakost_textView.setText(f1002dlr.getF1002dlr_jakost());
    f1002dlr_mnozstvi_textView.setText(String.format("%.2f", f1002dlr.getF1002dlr_mnozstvi()));
    f1002dlr_vady_textView.setText(f1002dlr.getF1002dlr_vady().toString());
    f1002dlr_mj_textView.setText(f1002dlr.getF1002dlr_mj());
    f1002dlr_hodnota_textView.setText(String.format("%.2f", f1002dlr.getHodnota()));
    f1002dlr_pc_textView.setText(String.format("%.2f", f1002dlr.getF1002dlr_pc()));

    Double mnozstvi = 0.00;
    Integer vady = 0;

    for (F1002ck_data f1002ck_data : f1002dlr.getF1002dlr_f1002ck_datas()) {
        mnozstvi += f1002ck_data.getF1002ck_data_mnozstvi_mj1();
        vady += f1002ck_data.getF1002ck_data_vady();
    }

    TextView nasnimane_mnozstvi_textView = holder.nasnimane_mnozstvi_textView;
    TextView nasnimane_vady_textView = holder.nasnimane_vady_textView;

    nasnimane_mnozstvi_textView.setText(String.format("%.2f", mnozstvi));
    nasnimane_vady_textView.setText(vady.toString());

    if (expandedPosition == -1) {
        f1002dlr.setExpanded(false);
    }

    Boolean isExpanded = f1002dlr.getExpanded();

    if (isExpanded) {
        holder.expandable_constraintLayout.setVisibility(View.VISIBLE);
    } else {
        holder.expandable_constraintLayout.setVisibility(View.GONE);
    }

    cdlItem_sub_recyclerView = holder.cdlItem_sub_recyclerView;

    LinearLayoutManager layoutManager = new LinearLayoutManager(cdlItem_sub_recyclerView.getContext(), LinearLayoutManager.VERTICAL, false);

    cdlItem_sub_recyclerView.setLayoutManager(layoutManager);
    cdlItem_sub_recyclerView.setAdapter(new CdlSubAdapter(f1002dlr.getF1002dlr_f1002ck_datas(), context));
    cdlItem_sub_recyclerView.setRecycledViewPool(recycledViewPool);

}

private void updateF1002dlh() {
    if (context instanceof AdapterCallInterface) {
        ((AdapterCallInterface) context).setDocumentData(f1002dlrList);
    }
}

private int getImageId(int status) {
    Integer imageId = 0;

    switch (status) {
        case -2:
            imageId = R.drawable.orange_status;
            break;
        case -1:
            imageId = R.drawable.red_status;
            break;
        case 0:
            imageId = R.drawable.grey_status;
            break;
        case 1:
            imageId = R.drawable.green_status;
            break;
    }

    return imageId;
}

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

public class ViewHolder extends RecyclerView.ViewHolder {

    private ImageView f1002dlr_status_imageView;
    private TextView f1002dlr_vpd_textView;
    private TextView f1002dlr_radek_textView;
    private TextView f1002dlr_komodita_textView;
    private TextView f1002dlr_xvyr_textView;
    private TextView f1002dlr_jakost_textView;
    private TextView f1002dlr_mnozstvi_textView;
    private TextView f1002dlr_vady_textView;
    private TextView f1002dlr_mj_textView;
    private TextView f1002dlr_hodnota_textView;
    private TextView f1002dlr_pc_textView;

    private TextView nasnimane_mnozstvi_textView;
    private TextView nasnimane_vady_textView;

    private LinearLayout linearLayout;

    private ConstraintLayout main_constrainLayout;
    private ConstraintLayout expandable_constraintLayout;
    private ConstraintLayout second_constraintLayout;

    private RecyclerView cdlItem_sub_recyclerView;

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

        initAdapterViews();

        second_constraintLayout.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                F1002dlr f1002dlr;

                if (expandedPosition >= 0 && expandedPosition != getAdapterPosition()) {
                    int prev = expandedPosition;
                    f1002dlr = f1002dlrList.get(prev);
                    if (f1002dlr.getExpanded()) {
                        f1002dlr.setExpanded(!f1002dlr.getExpanded());

                        notifyItemChanged(prev);
                    }
                }
                expandedPosition = getAdapterPosition();
                f1002dlr = f1002dlrList.get(expandedPosition);

                f1002dlr.setExpanded(!f1002dlr.getExpanded());

                updateF1002dlh();
                
                notifyItemChanged(expandedPosition);
            }
        });
    }

    private void initAdapterViews() {
        f1002dlr_status_imageView = (ImageView) itemView.findViewById(R.id.cdlItem_status_imageView);
        f1002dlr_vpd_textView = (TextView) itemView.findViewById(R.id.cdlItem_value_vpd_textView);
        f1002dlr_radek_textView = (TextView) itemView.findViewById(R.id.cdlItem_value_radek_textView);
        f1002dlr_komodita_textView = (TextView) itemView.findViewById(R.id.cdlItem_value_komodita_textView);
        f1002dlr_xvyr_textView = (TextView) itemView.findViewById(R.id.cdlItem_value_xvyr_textView);
        f1002dlr_jakost_textView = (TextView) itemView.findViewById(R.id.cdlItem_value_jakost_textView);
        f1002dlr_mnozstvi_textView = (TextView) itemView.findViewById(R.id.cdlItem_value_mnozstvi_textView);
        f1002dlr_vady_textView = (TextView) itemView.findViewById(R.id.cdlItem_value_vady_textView);
        f1002dlr_mj_textView = (TextView) itemView.findViewById(R.id.cdlItem_value_mj_textView);
        f1002dlr_hodnota_textView = (TextView) itemView.findViewById(R.id.cdlItem_value_hodnota_textView);
        f1002dlr_pc_textView = (TextView) itemView.findViewById(R.id.cdlItem_value_pc_textView);

        nasnimane_mnozstvi_textView = (TextView) itemView.findViewById(R.id.cdlItem_value_nasnimane_mnozstvi_textView);
        nasnimane_vady_textView = (TextView) itemView.findViewById(R.id.cdlItem_value_nasnimane_vady_textView);

        linearLayout = (LinearLayout) itemView.findViewById(R.id.menuItem_linearLayout);

        main_constrainLayout = (ConstraintLayout) itemView.findViewById(R.id.cdlItem_main_constraintLayout);
        expandable_constraintLayout = (ConstraintLayout) itemView.findViewById(R.id.cdlItem_expandable_constraintLayout);
        second_constraintLayout = (ConstraintLayout) itemView.findViewById(R.id.cdlItem_second_constraintLayout);

        cdlItem_sub_recyclerView = (RecyclerView) itemView.findViewById(R.id.cdlItem_sub_recyclerView);
    }

}

}

儿童适配器

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

private List<F1002ck_data> f1002ck_dataList;
private Context context;

private Integer showingButtonsPosition = -1;

public CdlSubAdapter(List<F1002ck_data> f1002ck_dataList, Context context) {
    this.context = context;
    this.f1002ck_dataList = f1002ck_dataList;
}

@NonNull
@Override
public CdlSubAdapter.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
    Context context = parent.getContext();
    LayoutInflater inflater = LayoutInflater.from(context);

    View cdSublView = inflater.inflate(R.layout.cdl_sub_item, parent, false);

    return new ViewHolder(cdSublView);
}

@Override
public void onBindViewHolder(@NonNull CdlSubAdapter.ViewHolder holder, int position) {
    F1002ck_data f1002ck_data = f1002ck_dataList.get(position);

    ImageView f1002ck_data_status_imageView = holder.f1002ck_data_status_imageView;

    if (!Objects.equals(f1002ck_data.getF1002ck_data_indikace(), Funkce.INDIKACE_OK)) {
        f1002ck_data.setStatus(Funkce.STATUS_WRONG);
    }

    f1002ck_data_status_imageView.setImageResource(getImageId(f1002ck_data.getStatus()));

    ConstraintLayout cdlSubItem_chyba_constrainLayout = holder.cdlSubItem_chyba_constrainLayout;

    TextView nazev_zbozi = holder.nazev_zbozi;
    TextView f1002ck_data_id_zbozi = holder.f1002ck_data_id_zbozi;
    TextView f1002ck_data_cislodokl = holder.f1002ck_data_cislodokl;
    TextView f1002ck_data_mnozstvi_mj1 = holder.f1002ck_data_mnozstvi_mj1;
    TextView f1002ck_data_vady = holder.f1002ck_data_vady;
    TextView chyba = holder.chyba;

    nazev_zbozi.setText(f1002ck_data.getNazevZbozi());
    f1002ck_data_id_zbozi.setText(f1002ck_data.getF1002ck_data_id_f10zbozi().toString());
    f1002ck_data_cislodokl.setText(f1002ck_data.getF1002ck_data_cislodokl().toString());
    f1002ck_data_mnozstvi_mj1.setText(String.format("%.2f", f1002ck_data.getF1002ck_data_mnozstvi_mj1()));
    f1002ck_data_vady.setText(f1002ck_data.getF1002ck_data_vady().toString());
    chyba.setText(f1002ck_data.getF1002ck_data_chyba());

    LinearLayout buttons_linearLayout = holder.buttons_linearLayout;

    if (showingButtonsPosition == -1) {
        f1002ck_data.setShowButtons((short) View.GONE);
    }

    if (f1002ck_data.getShowButtons() == View.VISIBLE) {
        cdlSubItem_chyba_constrainLayout.setVisibility(View.GONE);
        buttons_linearLayout.setVisibility((int) f1002ck_data.getShowButtons());
    } else {
        cdlSubItem_chyba_constrainLayout.setVisibility(View.VISIBLE);
        buttons_linearLayout.setVisibility((int) f1002ck_data.getShowButtons());
    }


}

private int getImageId(int status) {
    Integer imageId = 0;

    switch (status) {
        case -2:
            imageId = R.drawable.orange_status;
            break;
        case -1:
            imageId = R.drawable.red_status;
            break;
        case 0:
            imageId = R.drawable.grey_status;
            break;
        case 1:
            imageId = R.drawable.green_status;
            break;
    }

    return imageId;
}

private Integer sortElementsInList(F1002ck_data f1002ck_data) {
    Collections.sort(f1002ck_dataList, new Comparator<F1002ck_data>() {
        @Override
        public int compare(F1002ck_data t1, F1002ck_data t2) {
            if (t1.getStatus().compareTo(t2.getStatus()) == 0) {
                return t1.getF1002ck_data_id_f10zbozi().compareTo(t2.getF1002ck_data_id_f10zbozi());
            }
            return t1.getStatus().compareTo(t2.getStatus());
        }
    });

    for (int i = 0; i < f1002ck_dataList.size(); i++) {
        if (f1002ck_data.equals(f1002ck_dataList.get(i))) {
            return i;
        }
    }

    return 0;
}

private void updateF1002dlh() {
    if (context instanceof AdapterCallInterface) {
        ((AdapterCallInterface) context).setF1002ck_data(f1002ck_dataList);
    }
}

private void removeRowF1002ck_data(F1002ck_data f1002ck_data) {
    if (context instanceof AdapterCallInterface) {
        ((AdapterCallInterface) context).removeRowF1002ck_data(f1002ck_data);
    }
}

@Override
public void onViewAttachedToWindow(@NonNull ViewHolder holder) {
    super.onViewAttachedToWindow(holder);
}

@Override
public void onBindViewHolder(@NonNull ViewHolder holder, int position, @NonNull List<Object> payloads) {
    super.onBindViewHolder(holder, position, payloads);
}


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


public class ViewHolder extends RecyclerView.ViewHolder {

    private LinearLayout linearLayout;

    private ImageView f1002ck_data_status_imageView;

    private ConstraintLayout cdlSubItem_chyba_constrainLayout;

    private TextView nazev_zbozi;
    private TextView f1002ck_data_id_zbozi;
    private TextView f1002ck_data_cislodokl;
    private TextView f1002ck_data_mnozstvi_mj1;
    private TextView f1002ck_data_vady;
    private TextView chyba;

    private LinearLayout buttons_linearLayout;

    private CardView edit_imageButton;
    private CardView remove_imageButton;

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

        initAdapterViews();

        linearLayout.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                F1002ck_data f1002ck_data = null;

                if (showingButtonsPosition >= 0 && showingButtonsPosition != getAdapterPosition()) {
                    int prev = showingButtonsPosition;
                    f1002ck_data = f1002ck_dataList.get(prev);
                    if (f1002ck_data.getShowButtons() == (short) View.VISIBLE) {
                        f1002ck_data.setShowButtons((short) View.GONE);
                        notifyItemChanged(prev);
                    }
                }
                showingButtonsPosition = getAdapterPosition();
                if (!f1002ck_dataList.isEmpty()) {
                    f1002ck_data = f1002ck_dataList.get(showingButtonsPosition);
                }
                if (f1002ck_data != null) {
                    if (f1002ck_data.getShowButtons() == (short) View.VISIBLE) {
                        f1002ck_data.setShowButtons((short) View.GONE);
                        //cdlSubItem_chyba_constrainLayout.setVisibility(View.GONE);
                        //buttons_linearLayout.setVisibility((int) f1002ck_data.getShowButtons());
                    } else {
                        f1002ck_data.setShowButtons((short) View.VISIBLE);
                        //cdlSubItem_chyba_constrainLayout.setVisibility(View.VISIBLE);
                        //buttons_linearLayout.setVisibility((int) f1002ck_data.getShowButtons());
                    }
                }

                notifyItemChanged(showingButtonsPosition);
            }
        });

        edit_imageButton.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View view) {
                int position = getAdapterPosition();

                F1002ck_data f1002ck_data = f1002ck_dataList.get(position);

                f1002ck_data.setStatus(Funkce.STATUS_OK);

                f1002ck_data_status_imageView.setImageResource(getImageId(f1002ck_data.getStatus()));

                showingButtonsPosition = sortElementsInList(f1002ck_data);
                updateF1002dlh();
                notifyDataSetChanged();
            }
        });

        remove_imageButton.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View view) {
                int position = getAdapterPosition();

                F1002ck_data f1002ck_data = f1002ck_dataList.get(position);
                f1002ck_dataList.remove(f1002ck_data);

                removeRowF1002ck_data(f1002ck_data);
                notifyItemRemoved(position);
            }
        });

    }


    private void initAdapterViews() {
        linearLayout = (LinearLayout) itemView.findViewById(R.id.cdlSubItem_linearLayout);

        f1002ck_data_status_imageView = (ImageView) itemView.findViewById(R.id.cdlSubItem_status_imageView);

        cdlSubItem_chyba_constrainLayout = (ConstraintLayout) itemView.findViewById(R.id.cdlSubItem_chyba_constraintLayout);

        nazev_zbozi = (TextView) itemView.findViewById(R.id.cdlSubItem_value_nazev_zbozi_textView);
        f1002ck_data_id_zbozi = (TextView) itemView.findViewById(R.id.cdlSubItem_value_id_f10zbozi_textView);
        f1002ck_data_cislodokl = (TextView) itemView.findViewById(R.id.cdlSubItem_value_cislodokl_textView);
        f1002ck_data_mnozstvi_mj1 = (TextView) itemView.findViewById(R.id.cdlSubItem_value_mnozstvi_mj1_textView);
        f1002ck_data_vady = (TextView) itemView.findViewById(R.id.cdlSubItem_value_vady_textView);
        chyba = (TextView) itemView.findViewById(R.id.cdlSubItem_value_chyba_textView);

        buttons_linearLayout = (LinearLayout) itemView.findViewById(R.id.cdlSubItem_buttons_linearLayout);

        edit_imageButton = (CardView) itemView.findViewById(R.id.cdlSubItem_edit_cardView);
        remove_imageButton = (CardView) itemView.findViewById(R.id.cdlSubItem_remove_cardView);
    }

}

}

在这个问题的过程中更新了,我在内部进行了一些更改儿童适配器。

I have a problem when working with nested RecyclerView in RecyclerView. In my parent RecyclerView I am displaying rows of items. These rows have rows of scanned goods. If I want to display the scanned rows, I click on the parent Recyclerview and it expands. When I tap on the child RecyclerView, it should show edit/delete buttons instead of an error message. Notify works until I shrink the parent RecyclerView(tap it again) and expand it again. At the moment notify does not trigger onBindViewHolder.

Anyone know what to do?

Parent Fragment

public class ShowCdlFragment extends Fragment {

private FragmentShowCdlBinding binding;
private Resources res;
private SessionManager session;
private Bundle params;

private F1002dlh f1002dlh;


@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    this.binding = FragmentShowCdlBinding.inflate(getLayoutInflater());

    this.session = new SessionManager(getContext());

    this.res = getResources();

    this.session.checkLogin(getActivity());

    // Inflate the layout for this fragment
    return this.binding.getRoot();
}

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

    this.params = getArguments();
    this.f1002dlh = this.params.getParcelable("F1002DLH");

    RecyclerView rvMenu = (RecyclerView) binding.showCdlRecyclerView;

    ArrayList<F1002dlr> f1002dlrArrayList = this.f1002dlh.getF1002dlh_f1002dlrs();
    CdlAdapter cdlAdapter = new CdlAdapter(f1002dlrArrayList, getContext());

    rvMenu.setAdapter(cdlAdapter);
    rvMenu.setLayoutManager(new LinearLayoutManager(this.getContext()));
}

}

Parent Adapter

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

private List<F1002dlr> f1002dlrList;
private Context context;

private Integer expandedPosition = -1;

private RecyclerView.RecycledViewPool recycledViewPool;
private RecyclerView cdlItem_sub_recyclerView;

public CdlAdapter(List<F1002dlr> f1002dlrList, Context context) {
    this.f1002dlrList = f1002dlrList;
    this.context = context;

    this.recycledViewPool = new RecyclerView.RecycledViewPool();
}

@NonNull
@Override
public CdlAdapter.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
    Context context = parent.getContext();
    LayoutInflater inflater = LayoutInflater.from(context);

    View cdlView = inflater.inflate(R.layout.cdl_item, parent, false);

    return new ViewHolder(cdlView);
}


@Override
public void onBindViewHolder(@NonNull CdlAdapter.ViewHolder holder, int position) {
    F1002dlr f1002dlr = f1002dlrList.get(position);

    ImageView f1002dlr_status_imageView = holder.f1002dlr_status_imageView;
    TextView f1002dlr_vpd_textView = holder.f1002dlr_vpd_textView;
    TextView f1002dlr_radek_textView = holder.f1002dlr_radek_textView;
    TextView f1002dlr_komodita_textView = holder.f1002dlr_komodita_textView;
    TextView f1002dlr_xvyr_textView = holder.f1002dlr_xvyr_textView;
    TextView f1002dlr_jakost_textView = holder.f1002dlr_jakost_textView;
    TextView f1002dlr_mnozstvi_textView = holder.f1002dlr_mnozstvi_textView;
    TextView f1002dlr_vady_textView = holder.f1002dlr_vady_textView;
    TextView f1002dlr_mj_textView = holder.f1002dlr_mj_textView;
    TextView f1002dlr_hodnota_textView = holder.f1002dlr_hodnota_textView;
    TextView f1002dlr_pc_textView = holder.f1002dlr_pc_textView;

    f1002dlr_status_imageView.setImageResource(getImageId(f1002dlr.getStatus()));
    f1002dlr_vpd_textView.setText(f1002dlr.getF1002dlr_vpd().toString());
    f1002dlr_radek_textView.setText(f1002dlr.getF1002dlr_radek().toString());
    f1002dlr_komodita_textView.setText(f1002dlr.getF1002dlr_komodita());
    f1002dlr_xvyr_textView.setText(f1002dlr.getF1002dlr_xvyr().toString());
    f1002dlr_jakost_textView.setText(f1002dlr.getF1002dlr_jakost());
    f1002dlr_mnozstvi_textView.setText(String.format("%.2f", f1002dlr.getF1002dlr_mnozstvi()));
    f1002dlr_vady_textView.setText(f1002dlr.getF1002dlr_vady().toString());
    f1002dlr_mj_textView.setText(f1002dlr.getF1002dlr_mj());
    f1002dlr_hodnota_textView.setText(String.format("%.2f", f1002dlr.getHodnota()));
    f1002dlr_pc_textView.setText(String.format("%.2f", f1002dlr.getF1002dlr_pc()));

    Double mnozstvi = 0.00;
    Integer vady = 0;

    for (F1002ck_data f1002ck_data : f1002dlr.getF1002dlr_f1002ck_datas()) {
        mnozstvi += f1002ck_data.getF1002ck_data_mnozstvi_mj1();
        vady += f1002ck_data.getF1002ck_data_vady();
    }

    TextView nasnimane_mnozstvi_textView = holder.nasnimane_mnozstvi_textView;
    TextView nasnimane_vady_textView = holder.nasnimane_vady_textView;

    nasnimane_mnozstvi_textView.setText(String.format("%.2f", mnozstvi));
    nasnimane_vady_textView.setText(vady.toString());

    if (expandedPosition == -1) {
        f1002dlr.setExpanded(false);
    }

    Boolean isExpanded = f1002dlr.getExpanded();

    if (isExpanded) {
        holder.expandable_constraintLayout.setVisibility(View.VISIBLE);
    } else {
        holder.expandable_constraintLayout.setVisibility(View.GONE);
    }

    cdlItem_sub_recyclerView = holder.cdlItem_sub_recyclerView;

    LinearLayoutManager layoutManager = new LinearLayoutManager(cdlItem_sub_recyclerView.getContext(), LinearLayoutManager.VERTICAL, false);

    cdlItem_sub_recyclerView.setLayoutManager(layoutManager);
    cdlItem_sub_recyclerView.setAdapter(new CdlSubAdapter(f1002dlr.getF1002dlr_f1002ck_datas(), context));
    cdlItem_sub_recyclerView.setRecycledViewPool(recycledViewPool);

}

private void updateF1002dlh() {
    if (context instanceof AdapterCallInterface) {
        ((AdapterCallInterface) context).setDocumentData(f1002dlrList);
    }
}

private int getImageId(int status) {
    Integer imageId = 0;

    switch (status) {
        case -2:
            imageId = R.drawable.orange_status;
            break;
        case -1:
            imageId = R.drawable.red_status;
            break;
        case 0:
            imageId = R.drawable.grey_status;
            break;
        case 1:
            imageId = R.drawable.green_status;
            break;
    }

    return imageId;
}

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

public class ViewHolder extends RecyclerView.ViewHolder {

    private ImageView f1002dlr_status_imageView;
    private TextView f1002dlr_vpd_textView;
    private TextView f1002dlr_radek_textView;
    private TextView f1002dlr_komodita_textView;
    private TextView f1002dlr_xvyr_textView;
    private TextView f1002dlr_jakost_textView;
    private TextView f1002dlr_mnozstvi_textView;
    private TextView f1002dlr_vady_textView;
    private TextView f1002dlr_mj_textView;
    private TextView f1002dlr_hodnota_textView;
    private TextView f1002dlr_pc_textView;

    private TextView nasnimane_mnozstvi_textView;
    private TextView nasnimane_vady_textView;

    private LinearLayout linearLayout;

    private ConstraintLayout main_constrainLayout;
    private ConstraintLayout expandable_constraintLayout;
    private ConstraintLayout second_constraintLayout;

    private RecyclerView cdlItem_sub_recyclerView;

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

        initAdapterViews();

        second_constraintLayout.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                F1002dlr f1002dlr;

                if (expandedPosition >= 0 && expandedPosition != getAdapterPosition()) {
                    int prev = expandedPosition;
                    f1002dlr = f1002dlrList.get(prev);
                    if (f1002dlr.getExpanded()) {
                        f1002dlr.setExpanded(!f1002dlr.getExpanded());

                        notifyItemChanged(prev);
                    }
                }
                expandedPosition = getAdapterPosition();
                f1002dlr = f1002dlrList.get(expandedPosition);

                f1002dlr.setExpanded(!f1002dlr.getExpanded());

                updateF1002dlh();
                
                notifyItemChanged(expandedPosition);
            }
        });
    }

    private void initAdapterViews() {
        f1002dlr_status_imageView = (ImageView) itemView.findViewById(R.id.cdlItem_status_imageView);
        f1002dlr_vpd_textView = (TextView) itemView.findViewById(R.id.cdlItem_value_vpd_textView);
        f1002dlr_radek_textView = (TextView) itemView.findViewById(R.id.cdlItem_value_radek_textView);
        f1002dlr_komodita_textView = (TextView) itemView.findViewById(R.id.cdlItem_value_komodita_textView);
        f1002dlr_xvyr_textView = (TextView) itemView.findViewById(R.id.cdlItem_value_xvyr_textView);
        f1002dlr_jakost_textView = (TextView) itemView.findViewById(R.id.cdlItem_value_jakost_textView);
        f1002dlr_mnozstvi_textView = (TextView) itemView.findViewById(R.id.cdlItem_value_mnozstvi_textView);
        f1002dlr_vady_textView = (TextView) itemView.findViewById(R.id.cdlItem_value_vady_textView);
        f1002dlr_mj_textView = (TextView) itemView.findViewById(R.id.cdlItem_value_mj_textView);
        f1002dlr_hodnota_textView = (TextView) itemView.findViewById(R.id.cdlItem_value_hodnota_textView);
        f1002dlr_pc_textView = (TextView) itemView.findViewById(R.id.cdlItem_value_pc_textView);

        nasnimane_mnozstvi_textView = (TextView) itemView.findViewById(R.id.cdlItem_value_nasnimane_mnozstvi_textView);
        nasnimane_vady_textView = (TextView) itemView.findViewById(R.id.cdlItem_value_nasnimane_vady_textView);

        linearLayout = (LinearLayout) itemView.findViewById(R.id.menuItem_linearLayout);

        main_constrainLayout = (ConstraintLayout) itemView.findViewById(R.id.cdlItem_main_constraintLayout);
        expandable_constraintLayout = (ConstraintLayout) itemView.findViewById(R.id.cdlItem_expandable_constraintLayout);
        second_constraintLayout = (ConstraintLayout) itemView.findViewById(R.id.cdlItem_second_constraintLayout);

        cdlItem_sub_recyclerView = (RecyclerView) itemView.findViewById(R.id.cdlItem_sub_recyclerView);
    }

}

}

Child Adapter

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

private List<F1002ck_data> f1002ck_dataList;
private Context context;

private Integer showingButtonsPosition = -1;

public CdlSubAdapter(List<F1002ck_data> f1002ck_dataList, Context context) {
    this.context = context;
    this.f1002ck_dataList = f1002ck_dataList;
}

@NonNull
@Override
public CdlSubAdapter.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
    Context context = parent.getContext();
    LayoutInflater inflater = LayoutInflater.from(context);

    View cdSublView = inflater.inflate(R.layout.cdl_sub_item, parent, false);

    return new ViewHolder(cdSublView);
}

@Override
public void onBindViewHolder(@NonNull CdlSubAdapter.ViewHolder holder, int position) {
    F1002ck_data f1002ck_data = f1002ck_dataList.get(position);

    ImageView f1002ck_data_status_imageView = holder.f1002ck_data_status_imageView;

    if (!Objects.equals(f1002ck_data.getF1002ck_data_indikace(), Funkce.INDIKACE_OK)) {
        f1002ck_data.setStatus(Funkce.STATUS_WRONG);
    }

    f1002ck_data_status_imageView.setImageResource(getImageId(f1002ck_data.getStatus()));

    ConstraintLayout cdlSubItem_chyba_constrainLayout = holder.cdlSubItem_chyba_constrainLayout;

    TextView nazev_zbozi = holder.nazev_zbozi;
    TextView f1002ck_data_id_zbozi = holder.f1002ck_data_id_zbozi;
    TextView f1002ck_data_cislodokl = holder.f1002ck_data_cislodokl;
    TextView f1002ck_data_mnozstvi_mj1 = holder.f1002ck_data_mnozstvi_mj1;
    TextView f1002ck_data_vady = holder.f1002ck_data_vady;
    TextView chyba = holder.chyba;

    nazev_zbozi.setText(f1002ck_data.getNazevZbozi());
    f1002ck_data_id_zbozi.setText(f1002ck_data.getF1002ck_data_id_f10zbozi().toString());
    f1002ck_data_cislodokl.setText(f1002ck_data.getF1002ck_data_cislodokl().toString());
    f1002ck_data_mnozstvi_mj1.setText(String.format("%.2f", f1002ck_data.getF1002ck_data_mnozstvi_mj1()));
    f1002ck_data_vady.setText(f1002ck_data.getF1002ck_data_vady().toString());
    chyba.setText(f1002ck_data.getF1002ck_data_chyba());

    LinearLayout buttons_linearLayout = holder.buttons_linearLayout;

    if (showingButtonsPosition == -1) {
        f1002ck_data.setShowButtons((short) View.GONE);
    }

    if (f1002ck_data.getShowButtons() == View.VISIBLE) {
        cdlSubItem_chyba_constrainLayout.setVisibility(View.GONE);
        buttons_linearLayout.setVisibility((int) f1002ck_data.getShowButtons());
    } else {
        cdlSubItem_chyba_constrainLayout.setVisibility(View.VISIBLE);
        buttons_linearLayout.setVisibility((int) f1002ck_data.getShowButtons());
    }


}

private int getImageId(int status) {
    Integer imageId = 0;

    switch (status) {
        case -2:
            imageId = R.drawable.orange_status;
            break;
        case -1:
            imageId = R.drawable.red_status;
            break;
        case 0:
            imageId = R.drawable.grey_status;
            break;
        case 1:
            imageId = R.drawable.green_status;
            break;
    }

    return imageId;
}

private Integer sortElementsInList(F1002ck_data f1002ck_data) {
    Collections.sort(f1002ck_dataList, new Comparator<F1002ck_data>() {
        @Override
        public int compare(F1002ck_data t1, F1002ck_data t2) {
            if (t1.getStatus().compareTo(t2.getStatus()) == 0) {
                return t1.getF1002ck_data_id_f10zbozi().compareTo(t2.getF1002ck_data_id_f10zbozi());
            }
            return t1.getStatus().compareTo(t2.getStatus());
        }
    });

    for (int i = 0; i < f1002ck_dataList.size(); i++) {
        if (f1002ck_data.equals(f1002ck_dataList.get(i))) {
            return i;
        }
    }

    return 0;
}

private void updateF1002dlh() {
    if (context instanceof AdapterCallInterface) {
        ((AdapterCallInterface) context).setF1002ck_data(f1002ck_dataList);
    }
}

private void removeRowF1002ck_data(F1002ck_data f1002ck_data) {
    if (context instanceof AdapterCallInterface) {
        ((AdapterCallInterface) context).removeRowF1002ck_data(f1002ck_data);
    }
}

@Override
public void onViewAttachedToWindow(@NonNull ViewHolder holder) {
    super.onViewAttachedToWindow(holder);
}

@Override
public void onBindViewHolder(@NonNull ViewHolder holder, int position, @NonNull List<Object> payloads) {
    super.onBindViewHolder(holder, position, payloads);
}


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


public class ViewHolder extends RecyclerView.ViewHolder {

    private LinearLayout linearLayout;

    private ImageView f1002ck_data_status_imageView;

    private ConstraintLayout cdlSubItem_chyba_constrainLayout;

    private TextView nazev_zbozi;
    private TextView f1002ck_data_id_zbozi;
    private TextView f1002ck_data_cislodokl;
    private TextView f1002ck_data_mnozstvi_mj1;
    private TextView f1002ck_data_vady;
    private TextView chyba;

    private LinearLayout buttons_linearLayout;

    private CardView edit_imageButton;
    private CardView remove_imageButton;

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

        initAdapterViews();

        linearLayout.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                F1002ck_data f1002ck_data = null;

                if (showingButtonsPosition >= 0 && showingButtonsPosition != getAdapterPosition()) {
                    int prev = showingButtonsPosition;
                    f1002ck_data = f1002ck_dataList.get(prev);
                    if (f1002ck_data.getShowButtons() == (short) View.VISIBLE) {
                        f1002ck_data.setShowButtons((short) View.GONE);
                        notifyItemChanged(prev);
                    }
                }
                showingButtonsPosition = getAdapterPosition();
                if (!f1002ck_dataList.isEmpty()) {
                    f1002ck_data = f1002ck_dataList.get(showingButtonsPosition);
                }
                if (f1002ck_data != null) {
                    if (f1002ck_data.getShowButtons() == (short) View.VISIBLE) {
                        f1002ck_data.setShowButtons((short) View.GONE);
                        //cdlSubItem_chyba_constrainLayout.setVisibility(View.GONE);
                        //buttons_linearLayout.setVisibility((int) f1002ck_data.getShowButtons());
                    } else {
                        f1002ck_data.setShowButtons((short) View.VISIBLE);
                        //cdlSubItem_chyba_constrainLayout.setVisibility(View.VISIBLE);
                        //buttons_linearLayout.setVisibility((int) f1002ck_data.getShowButtons());
                    }
                }

                notifyItemChanged(showingButtonsPosition);
            }
        });

        edit_imageButton.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View view) {
                int position = getAdapterPosition();

                F1002ck_data f1002ck_data = f1002ck_dataList.get(position);

                f1002ck_data.setStatus(Funkce.STATUS_OK);

                f1002ck_data_status_imageView.setImageResource(getImageId(f1002ck_data.getStatus()));

                showingButtonsPosition = sortElementsInList(f1002ck_data);
                updateF1002dlh();
                notifyDataSetChanged();
            }
        });

        remove_imageButton.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View view) {
                int position = getAdapterPosition();

                F1002ck_data f1002ck_data = f1002ck_dataList.get(position);
                f1002ck_dataList.remove(f1002ck_data);

                removeRowF1002ck_data(f1002ck_data);
                notifyItemRemoved(position);
            }
        });

    }


    private void initAdapterViews() {
        linearLayout = (LinearLayout) itemView.findViewById(R.id.cdlSubItem_linearLayout);

        f1002ck_data_status_imageView = (ImageView) itemView.findViewById(R.id.cdlSubItem_status_imageView);

        cdlSubItem_chyba_constrainLayout = (ConstraintLayout) itemView.findViewById(R.id.cdlSubItem_chyba_constraintLayout);

        nazev_zbozi = (TextView) itemView.findViewById(R.id.cdlSubItem_value_nazev_zbozi_textView);
        f1002ck_data_id_zbozi = (TextView) itemView.findViewById(R.id.cdlSubItem_value_id_f10zbozi_textView);
        f1002ck_data_cislodokl = (TextView) itemView.findViewById(R.id.cdlSubItem_value_cislodokl_textView);
        f1002ck_data_mnozstvi_mj1 = (TextView) itemView.findViewById(R.id.cdlSubItem_value_mnozstvi_mj1_textView);
        f1002ck_data_vady = (TextView) itemView.findViewById(R.id.cdlSubItem_value_vady_textView);
        chyba = (TextView) itemView.findViewById(R.id.cdlSubItem_value_chyba_textView);

        buttons_linearLayout = (LinearLayout) itemView.findViewById(R.id.cdlSubItem_buttons_linearLayout);

        edit_imageButton = (CardView) itemView.findViewById(R.id.cdlSubItem_edit_cardView);
        remove_imageButton = (CardView) itemView.findViewById(R.id.cdlSubItem_remove_cardView);
    }

}

}

Updated

In the course of this question, I made several changes inside the child adapter.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文