Java 等待对话框关闭,将项目添加到recyclerview
我有一个Java 等待对话框关闭,将项目添加到recyclerview,java,android,android-recyclerview,android-alertdialog,Java,Android,Android Recyclerview,Android Alertdialog,我有一个RecyclerView,它应该会得到一个新项目,该项目的名称在AlertDialog中设置。 问题是,在以下代码中对话框仍处于打开状态时,正在创建该项。 在这种情况下,我如何等待输入?如果我必须挂接onDismiss()我没有设置正确项目名称所需的RecyclerView信息 HouseConfig config = new HouseConfig(this); AlertDialog.Builder builder = new AlertDialog.Builder(
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();
您应该将创建新项的逻辑放在onClick方法中。在这种情况下,新项是在对话框打开后立即创建的(我猜是以前的m_文本)。您应该将创建新项的逻辑放在onClick方法中。在这种情况下,新项目是在对话框打开后立即创建的(我猜是以前的m_文本)。当您按下“确定”按钮时,将调用肯定按钮的
onClick()
方法。因此,您应该在此方法中添加新数据并通知适配器
builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
m_text = input.getText().toString();
config.addNewCategoryWithViewOrder(new Category(m_text, R.drawable.ic_books, -1));
rv.getAdapter().notifyItemRangeInserted(config.getCategorySize() - 2, 1); // I would rather used notifyItemInserted()
rv.scrollToPosition(config.getCategorySize() - 1);
}
});
按下“确定”按钮时,将调用肯定按钮的onClick()
方法。因此,您应该在此方法中添加新数据并通知适配器
builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
m_text = input.getText().toString();
config.addNewCategoryWithViewOrder(new Category(m_text, R.drawable.ic_books, -1));
rv.getAdapter().notifyItemRangeInserted(config.getCategorySize() - 2, 1); // I would rather used notifyItemInserted()
rv.scrollToPosition(config.getCategorySize() - 1);
}
});
在“创建时”中,您可以初始化或设置“回收器”视图,当您想在该“回收器”视图中添加新项目时,您可以在对话框的一次单击中执行此操作
//function which setup RV.
initializeRV() //call this function in onCreate function.
showPopup() // call this function after initializeRV function.
public void showPopup(){
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) {
updateView(input.getText().toString());
dialog.dismiss();
}
});
}
builder.create().show();
public void updateView(String data){
//initialize your that particular (HoseConfig)item here, add it to list and notify RV adpter.
//after creating config object
config.addNewCategoryWithViewOrder(new Category(m_text, R.drawable.ic_books, -1));
rv.getAdapter().notifyItemRangeInserted(config.getCategorySize() - 2, 1); // I would rather used notifyItemInserted()
rv.scrollToPosition(config.getCategorySize() - 1);
}
public void initializeRV(){
//setup your Recycler View adapter and manager here!!
}
在“创建时”中,您可以初始化或设置“回收器”视图,当您想在该“回收器”视图中添加新项目时,您可以在对话框的一次单击中执行此操作
//function which setup RV.
initializeRV() //call this function in onCreate function.
showPopup() // call this function after initializeRV function.
public void showPopup(){
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) {
updateView(input.getText().toString());
dialog.dismiss();
}
});
}
builder.create().show();
public void updateView(String data){
//initialize your that particular (HoseConfig)item here, add it to list and notify RV adpter.
//after creating config object
config.addNewCategoryWithViewOrder(new Category(m_text, R.drawable.ic_books, -1));
rv.getAdapter().notifyItemRangeInserted(config.getCategorySize() - 2, 1); // I would rather used notifyItemInserted()
rv.scrollToPosition(config.getCategorySize() - 1);
}
public void initializeRV(){
//setup your Recycler View adapter and manager here!!
}