如果有一个recyclerview,它应该获得一个新项目,其名称在Alertdialog中设置。问题在于,使用以下代码在对话框仍处于打开状态时会创建该项目。在这种情况下如何等待输入?如果必须挂接onDismiss,则没有要设置正确项目名称的Recyclerview信息。
HouseConfig config = new HouseConfig(this);
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Enter new Category name");
final EditText input = new EditText(this);
input.setInputType(InputType.TYPE_CLASS_TEXT);
builder.setView(input);
builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
m_text = input.getText().toString();
dialog.dismiss();
}
});
builder.create().show();
Log.v(TAG,"m_text: " + m_text);
config.addNewCategoryWithViewOrder(new Category(m_text, R.drawable.ic_books, -1));
RecyclerView rv = (RecyclerView) v.getParent().getParent().getParent();
rv.setAdapter(new CategoryRecycleListAdapter(config.getViewOrderSortedCategories(), this));
rv.scrollToPosition(config.getCategorySize() - 1);
rv.getAdapter().notifyItemRangeInserted(config.getCategorySize() - 2, 1);
rv.getAdapter().notifyDataSetChanged();
您应该将创建新Item的逻辑放在onClick方法中。在这种情况下,将在对话框打开后立即创建新项目(我想是使用先前的m_text)。