Как добавить пользовательские записи AlertDialog в RecyclerView? - PullRequest
0 голосов
/ 25 сентября 2018

В моей деятельности есть RecyclerView, и я хочу добавить в него записи EditText (из Custom AlertDialog).Пользовательский AlertDialog имеет EditText и кнопку для сохранения имени.

Какой лучший способ сделать это?Должен ли я создать класс адаптера для AlertDialog, или можно установить его в классе MainActivity?

Вот коды:

MainActivity:

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        setupViews();
    }

    private void setupViews() {
        RecyclerView recyclerView = findViewById(R.id.rv_main);
        recyclerView.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false));
        ContactAdapter contactAdapter = new ContactAdapter();
        recyclerView.setAdapter(contactAdapter);

        Button addNewContactButton = findViewById(R.id.btn_main_newContact);
    }  

Контакт:

public class Contact {
    private String id;
    private String name;

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

ContactAdapter:

public class ContactAdapter extends RecyclerView.Adapter<ContactAdapter.ContactViewHolder> {
    private List<Contact> contacts = new ArrayList<>();

    public ContactAdapter() {
    }

    @NonNull
    @Override
    public ContactViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        LayoutInflater layoutInflater = LayoutInflater.from(parent.getContext());
        View view = layoutInflater.inflate(R.layout.item_contact,parent,false);
        return new ContactViewHolder(view);
    }

    @Override
    public void onBindViewHolder(@NonNull ContactViewHolder holder, int position) {
        holder.bindContact(contacts.get(position));
    }

    @Override
    public int getItemCount() {
        return contacts.size();
    }

    public void addContact(Contact contact){
        this.contacts.add(contact);
        notifyItemInserted(this.contacts.size()-1);
    }

    public static class ContactViewHolder extends RecyclerView.ViewHolder {
        public TextView nameTextView;

        public ContactViewHolder(View itemView) {
            super(itemView);
            nameTextView = itemView.findViewById(R.id.tv_itemContact);
        }

        public void bindContact(Contact contact){
            nameTextView.setText(contact.getName());
        }
    }
}
...