#android
#Android
Вопрос:
Я все еще изучаю Android и пытаюсь выполнить действие, в котором есть alertdialog, моя проблема в том, как я могу получить доступ к представлению alertdialog вне метода диалога? (Я хочу, чтобы мой индикатор выполнения отображался в исчезнувший при вызове другого метода)
это код, есть 2 метода 1. OpenDialog (alertdialog) и 2. loadItem (для получения значения из базы данных Firestore), когда я хочу установить видимость индикатора выполнения alertdialog на пропавшую в loadItem() pbSearchItem.setVisibility(View.GONE);
pbsearchditem становится красным / не может найти представление :
public void openDialog(){
LayoutInflater li = CreateReceiptActivity.this.getLayoutInflater();
final View v = li.inflate(R.layout.alertdialog_create_receipt, null);
final Builder builder = new Builder(CreateReceiptActivity.this);
builder.setView(v);
final CardView cvQtyPriceBox = v.findViewById(R.id.alertdialog_receipt_cv_qtyprice);
final EditText addItemType = v.findViewById(R.id.alertdialog_receipt_type);
addItemType.setFilters(new InputFilter[]{new InputFilter.AllCaps()});
final EditText addItemMerk = v.findViewById(R.id.alertdialog_receipt_merk);
final ProgressBar pbSearchItem = v.findViewById(R.id.alertdialog_receipt_pb);
final Button searchitemBtn = v.findViewById(R.id.alertdialog_receipt_btn_search_typemerk);
addItemMerk.setFilters(new InputFilter[]{new InputFilter.AllCaps()});
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 RecyclerView recyclerSearchedItem = v.findViewById(R.id.alertdialog_receipt_recycler);
recyclerSearchedItem.setHasFixedSize(true);
recyclerSearchedItem.setLayoutManager(new LinearLayoutManager(this));
alertDialogAdapter = new ReceiptAlertDialogAdapter(this, receiptItemList);
recyclerSearchedItem.setAdapter(alertDialogAdapter);
addItemType.setText(qrResult);
final AlertDialog alertDialog = builder.create();
alertDialog.setOnShowListener(new DialogInterface.OnShowListener() {
@Override
public void onShow(DialogInterface dialog) {
Button btnScan = v.findViewById(R.id.alertdialog_receipt_scanqr);
btnScan.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(CreateReceiptActivity.this, QRScannerActivity.class);
startActivityForResult(i, QR_REQUEST_CODE);
}
});
}
});
alertDialog.show();
searchitemBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
searchitemType = addItemType.getText().toString();
searchitemMerk = addItemMerk.getText().toString();
if (searchitemType.isEmpty()){
searchitemMerkfilter = db.collection("watchlist").whereEqualTo("merk",searchitemMerk).get();
pbSearchItem.setVisibility(View.VISIBLE);
loadItem();
alertDialog.show();
receiptItemList.clear();
}
else if(!searchitemType.isEmpty()) {
searchtypemerk = searchitemType " - " searchitemMerk;
searchitemMerkfilter = db.collection("watchlist").whereEqualTo("type",searchtypemerk).get();
pbSearchItem.setVisibility(View.VISIBLE);
loadItem();
alertDialog.show();
receiptItemList.clear();
}
}
});
btnSubmit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
itemType = addItemType.getText().toString().trim();
itemQty = addItemQty.getText().toString().trim();
itemPrice = addItemPrice.getText().toString().trim();
listReceiptItem = new ListReceiptItem(itemType, itemQty, itemPrice);
receiptItemList.add(listReceiptItem);
recyclerView.setAdapter(adapter);
adapter.notifyDataSetChanged();
alertDialog.dismiss();
qrResult = null;
Toast.makeText(CreateReceiptActivity.this, "barang tertambah", Toast.LENGTH_SHORT).show();
}
});
}
private void loadItem() {
searchitemMerkfilter
.addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
@Override
public void onComplete(@NonNull Task<QuerySnapshot> task) {
if (task.isSuccessful()) {
for (QueryDocumentSnapshot document : task.getResult()) {
Log.d(Tag.ITEM, document.getId() "=>" document.getData());
String id = document.getString("id");
String date = document.getString("date");
String type = document.getString("type");
String qty = document.getString("qty");
String price = document.getString("price");
listReceiptItem = new ListReceiptItem(type, qty, price);
receiptItemList.add(listReceiptItem);
}
pbSearchItem.setVisibility(View.GONE);
} else {
Log.w(Tag.ITEM, "error getting documents", task.getException());
}
}
});
}
Комментарии:
1. Почему бы не добавить pbSearchitem в качестве члена вашего класса?
2. ах да, я должен был сделать это как член моего класса
Ответ №1:
Вы можете использовать findViewById таким же образом в Activity, например,
alertDialog.findViewById(R.id.pb_progress).setVisible(View.INVISIBLE);
Ответ №2:
вы можете сделать это
View v = LayoutInflater.from(getApplicationContext()).inflate(R.layout.alertdialog_create_receipt, null);
final Builder builder = new Builder(CreateReceiptActivity.this);
builder.setView(v);