Как получить данные из настраиваемого диалогового окна и создать новый элемент в программе повторного просмотра? - PullRequest
1 голос
/ 14 октября 2019

Мне нужно нажать на FAB, и будет вызван пользовательский диалог. Итак, как получить данные из диалогового окна (DialogFragment) и создать новый элемент в представлении реселлера, в котором есть эти данные?

Отредактировано: теперь у меня есть исключение 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();
        }
    });
}

Ответы [ 2 ]

0 голосов
/ 14 октября 2019

Вы можете использовать простой 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 с идентификатором editText

0 голосов
/ 14 октября 2019

Как правило, вы хотите, чтобы при нажатии на кнопку fab (кнопка с плавающим действием) появлялась конкретная форма, а затем по завершении этой конкретной формы добавьте любой элемент в представление переработчика.

Вот шаги, которые необходимо выполнитьэти требования -

1. Добавьте OnClickListener в fab и откройте диалог.
2. Добавьте кнопку Отправить в форму. Установите OnClickListener на него.
3. При нажатии кнопки «Отправить» (Выполните следующие шаги) Сохраните информацию формы в любой форме (Создайте объект POJO)
4. Добавить данные в Recycler DataSet. Вызовите notifyDataSetChanged для адаптера Recycler.
5. Вызовите dialog.dismiss ().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...