我正在做一个用来做收据的活动。活动中有一个警报对话框,此警报对话框的用途是添加要添加到收据中的物料的清单数据。我已经制作了代码并且可以运行,但是问题是当我从警报对话框添加项目时,它没有显示在“活动/收据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();
}
});
}
});
}
}
最佳答案
您在活动中已经有一个适配器,因此无需再次重新初始化适配器。从buttonClick删除此代码
adapter = new ReceiptItemAdapter(CreateReceiptActivity.this, receiptItemList);
recyclerView.setAdapter(adapter);
在列表中添加新项目后,只需通知适配器即可。像这样
receiptItemList.add(listReceiptItem);
adapter.notifyDataSetChanged()
希望这会有所帮助。
关于android - Recyclerview不显示“警报”对话框中的数据列表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55404002/