0

I'm trying to delete an item from listview (arrayadapter) when delete button is clicked but it crashes after it's being deleted from the realm database.

 @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;
    }

I'm using this code now to delete the item it's working but I think this code may cause in performance issue :

        clear();
        addAll(new ArrayList<Reminder>(realm.where(Reminder.class).findAll()));
        notifyDataSetChanged();
Zoe
  • 27,060
  • 21
  • 118
  • 148
Muslem Omar
  • 1,021
  • 12
  • 12
  • Please provide more information on what exactly it is you want to achieve. What is the result of which function or variable you want to have? – Socrates May 19 '18 at 22:25
  • Delete an item from the listview and realm – Muslem Omar May 19 '18 at 22:40
  • Why are you using `ArrayAdapter` when you could be using [RealmBaseAdapter](https://github.com/realm/realm-android-adapters/blob/ce136df1280272abda8e132df0116d10eae7d815/adapters/src/main/java/io/realm/RealmBaseAdapter.java) which handles this automatically?? – EpicPandaForce May 19 '18 at 23:58
  • Thanks EpicPandaForce! I've begun using (RealmBaseAdapter) and it's awesome. – Muslem Omar May 20 '18 at 07:40

1 Answers1

1

I've used RealmBaseAdapter instead.

Muslem Omar
  • 1,021
  • 12
  • 12