我需要单击fab,然后将调用自定义对话框。那么,如何从dialog(DialogFragment)获取数据并在recyclerview中创建一个包含此数据的新项目呢?
编辑:现在我有NullPointerException。代码在这里:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
recyclerView = findViewById(R.id.recyclerView);
adapter = new UserAdapter(users, this);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
recyclerView.setAdapter(adapter);
FloatingActionButton fab = findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
createDialog();
}
});
}
public void createDialog(){
View view = LayoutInflater.from(this).inflate(R.layout.dialog_user, null, false);
final EditText username = view.findViewById(R.id.username);
final EditText pass = view.findViewById(R.id.password);
final AlertDialog.Builder builder = new AlertDialog.Builder(this)
.setTitle("Title")
.setView(view)
.setPositiveButton("Add", null)
.setNegativeButton("Cancel", null)
.setCancelable(false);
final AlertDialog dialog = builder.create();
dialog.show();
dialog.getButton(DialogInterface.BUTTON_POSITIVE).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//update RecyclerView
users.add(new User(username.toString(), pass.toString()));
dialog.dismiss();
}
});
}
答案 0 :(得分:0)
基本上,您希望单击fab(浮动操作按钮)时会弹出特定表单,然后在完成该特定表单时将任何项目添加到回收者视图。
以下是完成这些要求的步骤-
1。将OnClickListener添加到fab并打开对话框。
2。在表单中添加“提交”按钮。将它设置为OnClickListener。
3。在“提交”按钮上单击(执行以下步骤)以任何形式存储表单信息(使对象成为POJO)
4。在Recycler DataSet中添加数据。在回收站适配器上调用notifyDataSetChanged。
5。呼叫dialog.dismiss()。
答案 1 :(得分:0)
您可以将简单的 AlertDialog 与 RecyclerView 结合使用以实现此目的。谢谢
View view = LayoutInflater.from(this).inflate(R.layout.edit_layout, null, false);
final EditText editText = view.findViewById(R.id.editText);
AlertDialog.Builder builder = new AlertDialog.Builder(this)
.setTitle("Title")
.setView(view)
.setPositiveButton("Add", null)
.setNegativeButton("Cancel", null)
.setCancelable(false);
AlertDialog dialog = builder.create();
dialog.show();
dialog.getButton(DialogInterface.BUTTON_POSITIVE).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//fdgdf
if(!TextUtils.isEmpty(editText.getText())) {
//update RecyclerView
dialog.dismis();
} else {
//Toast to show empty
}
}
});
R.layout.edit_layout
包含 EditText ,其ID为 editText