Как применить метод notifyDataSetChanges () от адаптера?

Я использую recyclerview с настраиваемым адаптером, расширяет класс RecyclerView.Adapter

Я запрограммировал всплывающее окно внутри метода onBindViewHolder () внутри класса адаптера всплывающее окно содержит два элемента, редактировать и удалять, оба работают хорошо, но проблема в том, что когда я удаляю элемент из recyclerview, мне нужно закрыть приложение и запустить его снова, чтобы увидеть, что он уже удален. Я хочу видеть изменения без выхода из приложения Я пытался использовать notifyDataSetChanged () внутри адаптера, но это не работает как я могу решить эту проблему ??

вот мой код внутри OnBindViewHolder

holder.dotsOptions.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        PopupMenu popup = new PopupMenu(ctx, holder.dotsOptions);
        //Inflating the Popup using xml file
        popup.getMenuInflater().inflate(R.menu.dots_menu, popup.getMenu());
        popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
            @Override
            public boolean onMenuItemClick(MenuItem item) {

                if (item.getItemId()==R.id.edit){

                }
                else if (item.getItemId()==R.id.delete){
                    AlertDialog.Builder builder=new AlertDialog.Builder(ctx);
                    builder.setTitle("Are you sure to delete:");
                    builder.setMessage(holder.contactDisplayName.getText().toString());
                    builder.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int which) {


                            Uri contactUri = Uri.withAppendedPath(ContactsContract.PhoneLookup.CONTENT_FILTER_URI, Uri.encode(contactInfo[1]));
                            Cursor cur = ctx.getContentResolver().query(contactUri, null, null, null, null);
                            try {
                                if (cur.moveToFirst()) {
                                    do {
                                        if (cur.getString(cur.getColumnIndex(ContactsContract.PhoneLookup.DISPLAY_NAME)).equalsIgnoreCase(contactInfo[0])) {
                                            String lookupKey = cur.getString(cur.getColumnIndex(ContactsContract.Contacts.LOOKUP_KEY));
                                            Uri uri = Uri.withAppendedPath(ContactsContract.Contacts.CONTENT_LOOKUP_URI, lookupKey);
                                            ctx.getContentResolver().delete(uri, null, null);

                                        }

                                    } while (cur.moveToNext());
                                    notifyDataSetChanged();

                                }

                            } catch (Exception e) {
                                System.out.println(e.getStackTrace());
                            } finally {
                                cur.close();


                            }


                        }
                    });
                    builder.setNegativeButton("No", new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int which) {

                        }
                    });
                    AlertDialog alert=builder.create();
                    alert.show();
                }

                return false;
            }
        });
        popup.show();

    }
});
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
0
41
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Перед notifyDataSetChanged() позвоните в yourList.remove(item). Все!

Другие вопросы по теме