android - Recyclerview 不显示警报对话框中的数据列表

标签 android android-recyclerview

我正在进行一项用于制作收据的 Activity 。 Activity 中有一个 alertdialog,这个 alertdialog 的用途是添加将要添加到 Receipt 的项目的列表数据。我已经编写了代码并且它运行了,但问题是当我从警报对话框中添加项目时,它没有显示在 Activity/Receipt RecyclerView 中。

有人可以修复这段代码吗?

代码:

public class CreateReceiptActivity extends AppCompatActivity {

    @BindView(R.id.btn_receipt_add_item)
    ImageButton addItem;
    @BindView(R.id.receipt_view_recycler)
    RecyclerView recyclerView;

    List<ListReceiptItem> receiptItemList;
    ListReceiptItem listReceiptItem;
    ReceiptItemAdapter adapter;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_create_receipt);
        ButterKnife.bind(this);

        receiptItemList = new ArrayList<>();
        recyclerView.setHasFixedSize(true);
        recyclerView.setLayoutManager(new LinearLayoutManager(this));
        adapter = new ReceiptItemAdapter(this, receiptItemList);
        recyclerView.setAdapter(adapter);

        addItem.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                LayoutInflater li = CreateReceiptActivity.this.getLayoutInflater();

                View v = li.inflate(R.layout.alertdialog_create_receipt, null);
                AlertDialog.Builder builder = new AlertDialog.Builder(CreateReceiptActivity.this);
                builder.setView(v);

                final EditText addItemType = v.findViewById(R.id.alertdialog_receipt_type);
                final EditText addItemQty = v.findViewById(R.id.alertdialog_receipt_qty);
                final EditText addItemPrice = v.findViewById(R.id.alertdialog_receipt_price);
                Button btnSubmit = v.findViewById(R.id.alertdialog_receipt_submit);



                final AlertDialog alertDialog = builder.show();
//
//                receiptItemList = new ArrayList<>();
//                listReceiptItem = new ListReceiptItem();
                btnSubmit.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View view) {

                        final String itemType = addItemType.getText().toString();
                        final String itemQty = addItemQty.getText().toString();
                        final String itemPrice = addItemPrice.getText().toString();
                        listReceiptItem = new ListReceiptItem(itemType, itemQty, itemPrice,"0");
                        receiptItemList.add(listReceiptItem);
                        adapter = new ReceiptItemAdapter(CreateReceiptActivity.this, receiptItemList);
                        recyclerView.setAdapter(adapter);
                        alertDialog.dismiss();
                    }
                });
            }
        });
    }
}

最佳答案

您的 Activity 中已经有一个适配器,因此无需再次重新初始化适配器。从 buttonClick 中删除此代码

adapter = new ReceiptItemAdapter(CreateReceiptActivity.this, receiptItemList);
recyclerView.setAdapter(adapter);

在列表中添加新项目后,只需通知适配器即可。像这样

receiptItemList.add(listReceiptItem);
adapter.notifyDataSetChanged()

希望这会有所帮助。

关于android - Recyclerview 不显示警报对话框中的数据列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55404002/

相关文章:

java - 尝试在同一 Activity 中从纯文本(框)打印用户输入

android - 如何创建 Notification.Action 并将其添加到自定义通知

android - 内部 Recyclerview 未收到点击事件

android - RecyclerView 的第一项丢失

java - RecyclerView 占用所有屏幕空间

android - 更改 Chromecast 转换图标颜色

android - 具有特定格式的深度链接

android - 如何在Android中处理改造响应Kotlin?

java - RecyclerView getItemViewType不被调用

android - notificationDataSetChanged() 在适配器中不起作用