Удалить элемент из списка и области - PullRequest
0 голосов
/ 20 мая 2018

Я пытаюсь удалить элемент из списка (arrayadapter), когда нажата кнопка «Удалить», но происходит сбой после его удаления из базы данных области.

 @Override
    public View getView(final int position, @Nullable View convertView, @NonNull ViewGroup parent) {

        realm = Realm.getDefaultInstance();

        View listItemView = convertView;

        if (listItemView == null) {
            listItemView = LayoutInflater.from(getContext()).inflate(R.layout.meditations_list_item, parent, false);
        }

        Reminder reminder = getItem(position);

        TextView reminderHour = listItemView.findViewById(R.id.hour_tv);
        final ImageView deleteBtn = listItemView.findViewById(R.id.delete_btn);
        deleteBtn.setTag(position);
        final View finalListItemView = listItemView;
        deleteBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                final Integer index = (Integer) deleteBtn.getTag();
                Reminder deletedReminder = getItem(index);
                if (deletedReminder == null) {
                    Toast.makeText(getContext(), "Error in deleting!", Toast.LENGTH_SHORT).show();
                    return;
                }

                String id = deletedReminder.getId();
                realm.beginTransaction();
                RealmResults<Reminder> reminderObjs = realm.where(Reminder.class)
                        .equalTo("id", id)
                        .findAll();
                boolean isDeleted = reminderObjs.deleteAllFromRealm();
                realm.commitTransaction();
                notifyDataSetChanged();
                Log.d(TAG, "execute: " + isDeleted);


            }
        });


        reminderHour.setText(reminder.getHours());

        return listItemView;
    }

Сейчас я использую этот код для удаления работающего элемента, но я думаю, что этот код может вызвать проблемы с производительностью:

        clear();
        addAll(new ArrayList<Reminder>(realm.where(Reminder.class).findAll()));
        notifyDataSetChanged();

1 Ответ

0 голосов
/ 20 мая 2018

Я использовал RealmBaseAdapter вместо этого.

...