Java 如何从自定义对话框中获取数据并在recyclerview中创建新项?

Java 如何从自定义对话框中获取数据并在recyclerview中创建新项?,java,android,android-recyclerview,dialog,Java,Android,Android Recyclerview,Dialog,我需要点击晶圆厂和自定义对话框将被调用。那么,如何从dialog(DialogFragment)中获取数据并在recyclerview中创建一个新项,其中包含此数据 编辑:现在我有了NullPointerException。代码如下: @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.a

我需要点击晶圆厂和自定义对话框将被调用。那么,如何从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();
        }
    });
}

基本上,您希望在单击fab(浮动操作按钮)时弹出特定表单,然后在完成此特定表单后,将任何项目添加到回收器视图中。

以下是完成这些要求的步骤-

一,。将OnClickListener添加到fab并打开对话框。
二,。在表单中添加Submit按钮。将OnClickListener设置为它。
三,。在提交按钮上,单击(执行以下步骤)以任何形式存储表单信息(使POJO成为对象)
四,。在回收器数据集中添加数据。在回收器适配器上调用notifyDataSetChanged。

五,。调用dialog.discouse()。

基本上,您希望在单击fab(浮动操作按钮)时弹出特定表单,然后在完成此特定表单后将任何项目添加到回收器视图。

以下是完成这些要求的步骤-

一,。将OnClickListener添加到fab并打开对话框。
二,。在表单中添加Submit按钮。将OnClickListener设置为它。
三,。在提交按钮上,单击(执行以下步骤)以任何形式存储表单信息(使POJO成为对象)
四,。在回收器数据集中添加数据。在回收器适配器上调用notifyDataSetChanged。

五,。调用dialog.disclose()。

您可以使用简单的警报对话框回收视图来实现这一点。谢谢

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\u layout
包含id为EditTextEditText

您可以使用简单的AlertDialogRecyclerView来实现这一点。谢谢

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\u layout
包含id为EditTextEditText

您编写过任何代码吗?我有一个简单的recyclerview和一个简单的对话框,第二个似乎会发生变化。您是否以您试图完成的想法编写过任何代码?对话框中是否有用户将填写的表单?是,它有一个EditText视图,你的回收器正在接收一个字符串数组列表,我猜?你有没有编写过代码?我有一个简单的recyclerview和一个简单的对话框,第二个似乎会改变。你有没有按照你想要完成的想法编写过代码?您的对话框是否有用户将填写的表单?是的,它有一个EditText视图,并且您的回收器正在接收一个字符串的arraylist?您是否使用arraylist为RecyclerView初始化适配器?如果是这样,那么只需将新项目添加到arraylist和
notify
adapter关于数据集更改我只需添加到arraylist new POJO?使用对话框中的内容,创建用户POJO并将其添加到arraylist和notify,并将其添加到RecyclerView、FAB所在的活动类中。创建一个函数并粘贴此代码,然后单击FAB call this function弹出对话框并执行restI创建了一个函数但我有NPE,为什么?您是否使用ArrayList为RecyclerView初始化适配器?如果是这样,那么只需将新项目添加到arraylist和
notify
adapter关于数据集更改我只需添加到arraylist new POJO?使用对话框中的内容,创建用户POJO并将其添加到arraylist和notify,并将其添加到RecyclerView、FAB所在的活动类中。创建一个函数并粘贴此代码,点击FAB调用此函数弹出对话框并执行restI创建了一个函数但我有NPE,为什么?你能详细解释我的第二段吗?第二段是什么意思?你能详细解释我的第二段吗?第二段是什么意思?