Recyclerview не показывает список данных из Alert Dialog - PullRequest
1 голос
/ 28 марта 2019

Я делаю действие, которое используется для получения квитанции.В Деятельности есть alerttdialog, его использование позволяет добавлять данные Списка элементов, которые будут добавлены в Квитанцию.Я уже создал код, и он работает, но проблема в том, что когда я добавляю элемент из диалогового окна предупреждения, он не отображается в 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();
                    }
                });
            }
        });
    }
}

Ответы [ 2 ]

1 голос
/ 28 марта 2019

У вас уже есть адаптер в действии, поэтому нет необходимости повторно инициализировать адаптер.Удалите этот код из кнопки Click

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

После добавления нового элемента в список просто сообщите об этом адаптеру.Вот так

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

Надеюсь, это поможет.

0 голосов
/ 28 марта 2019

Пожалуйста, добавьте adapter.notifyDataSetChanged(); после recyclerView.setAdapter(adapter); внутри слушателя onclick.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...