繁体   English   中英

如何在 RecyclerView 适配器 class 中初始化正确的 TextView?

[英]How to initialize right TextView in RecyclerView Adapter class?

我想设置自定义构建弹出窗口的文本。 只要我想设置文本,经典的NullPointerException就来了。 如何访问自定义弹出窗口中的文本字段? 如何更改 TextView order_overview_number.setText(...)的文本。 我该如何正确初始化它? TextView order_overview_number = epicDialog.findViewById(R.id.order_overview_number); 不幸的是,这是错误的......

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

    ArrayList<Bestellung> bestellung;
    Context mContext;
    Dialog epicDialog;

    public UserBestellAdapter(Context context, ArrayList<Bestellung> list) {
        mContext = context;
        bestellung = list;
        epicDialog = new Dialog(mContext);
    }

    @NonNull
    @Override
    public UserBestellAdapter.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(mContext).inflate(R.layout.adapter_bestell, parent, false);
        UserBestellAdapter.ViewHolder viewHolder = new UserBestellAdapter.ViewHolder(view);


        return viewHolder;
    }
    @NonNull

    @Override
    public void onBindViewHolder(@NonNull UserBestellAdapter.ViewHolder holder, final int position) {
      //Gesamtpreis:   holder.item_betrag.setText(String.valueOf(bestellung.get(position).getBetrag()));
      // Datum:   holder.item_datum.setText(bestellung.get(position).getDatum());
        holder.item_items.setText(bestellung.get(position).getProdukte());
        //holder.item_code.setText(bestellung.get(position).getBestellnummer());
        String bestellid =bestellung.get(position).getBestellnummer() + "";
        holder.item_code.setText(bestellid);
        holder.item_betrag.setText(Double.toString(bestellung.get(position).getSumme()));
        holder.item_datum.setText(bestellung.get(position).getDatum());


        holder.layout_user_bestellung.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                TextView order_overview_number = epicDialog.findViewById(R.id.order_overview_number);
                //order_overview_number.setText();
                epicDialog.setContentView(R.layout.user_popup_order_overview);
                epicDialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
                Button btn_order_overview_finish = (Button) epicDialog.findViewById(R.id.btn_order_overview_finish);
                System.out.println(bestellung.get(position).getBestellnummer());

                 // HERE IS THE ERROR :(
                //order_overview_number.setText(String.valueOf(bestellung.get(position).getDatum()));
                btn_order_overview_finish.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        epicDialog.dismiss();
                    }

                });
                epicDialog.show();

            }
        });

    }

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

    public static class ViewHolder extends RecyclerView.ViewHolder {
        private TextView item_items, item_betrag, item_datum, item_code;
        private ConstraintLayout layout_user_bestellung;



        public ViewHolder(@NonNull View itemView) {
            super(itemView);
            item_items = itemView.findViewById(R.id.items);
            item_betrag = itemView.findViewById(R.id.betrag);
            item_datum = itemView.findViewById(R.id.datum);
            item_code = itemView.findViewById(R.id.code);
            layout_user_bestellung = itemView.findViewById(R.id.layout_user_bestellung);

        }
    }
}

编辑(没用)我试图通过 itemView 设置文本,如 epicDialog。

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

public static class ViewHolder extends RecyclerView.ViewHolder {
    private TextView item_items, item_betrag, item_datum, item_code;
    private ConstraintLayout layout_user_bestellung;
    private TextView tw;



    public ViewHolder(@NonNull View itemView) {
        super(itemView);
        item_items = itemView.findViewById(R.id.items);
        item_betrag = itemView.findViewById(R.id.betrag);
        item_datum = itemView.findViewById(R.id.datum);
        item_code = itemView.findViewById(R.id.code);
        layout_user_bestellung = itemView.findViewById(R.id.layout_user_bestellung);
        tw = itemView.findViewById(R.id.order_overview_number);

    }
}

    @Override
    public void onBindViewHolder(@NonNull UserBestellAdapter.ViewHolder holder, final int position) {
      //Gesamtpreis:   holder.item_betrag.setText(String.valueOf(bestellung.get(position).getBetrag()));
      // Datum:   holder.item_datum.setText(bestellung.get(position).getDatum());
        holder.item_items.setText(bestellung.get(position).getProdukte());
        //holder.item_code.setText(bestellung.get(position).getBestellnummer());
        String bestellid =bestellung.get(position).getBestellnummer() + "";
        holder.item_code.setText(bestellid);
        holder.item_betrag.setText(Double.toString(bestellung.get(position).getSumme()));
        holder.item_datum.setText(bestellung.get(position).getDatum());


        holder.layout_user_bestellung.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                //TextView order_overview_number = epicDialog.findViewById(R.id.order_overview_number);
                //order_overview_number.setText();
                epicDialog.setContentView(R.layout.user_popup_order_overview);
                epicDialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
                Button btn_order_overview_finish = (Button) epicDialog.findViewById(R.id.btn_order_overview_finish);
                System.out.println(bestellung.get(position).getBestellnummer());
                holder.tw.setText("hallo");
                btn_order_overview_finish.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        epicDialog.dismiss();
                    }

                });
                epicDialog.show();

            }
        });

    }

尝试

        holder.layout_user_bestellung.setOnClickListener(new View.OnClickListener() {
                        @Override
                        public void onClick(View view) {
                        View v = View.inflate(mContext, R.layout.user_popup_order_overview, null);

                        EditText order_overview_number = (EditText) v.findViewById(R.id.order_overview_number);
                        order_overview_number.setText(String.valueOf(bestellung.get(position).getDatum()));

                        Button btn_order_overview_finish = (Button) v.findViewById(R.id.btn_order_overview_finish);
                        System.out.println(bestellung.get(position).getBestellnummer());

              btn_order_overview_finish.setOnClickListener(new View.OnClickListener() {
                                @Override
                                public void onClick(View v) {
                                    epicDialog.dismiss();
                                }
            
                            });

                        epicDialog.setContentView(v);
                        epicDialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));

                        
                            epicDialog.show();
            
                        }
                    });

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM