Skip to content

Snappy1

  • Home
  • Android
  • What
  • How
  • Is
  • Can
  • Does
  • Do
  • Why
  • Are
  • Who
  • Toggle search form

[FIXED] java – Android swipe to delete recyclerView items

Posted on November 11, 2022 By

Solution 1 :

Use ItemTouchHelper class

ItemTouchHelper itemTouchHelper = new ItemTouchHelper(newItemTouchHelper.SimpleCallback(0, ItemTouchHelper.RIGHT|ItemTouchHelper.LEFT) {
        @Override
        public boolean onMove(@NonNull RecyclerView recyclerView, @NonNull RecyclerView.ViewHolder viewHolder, @NonNull RecyclerView.ViewHolder target) {
           return false;
        }

        @Override
        public void onSwiped(@NonNull RecyclerView.ViewHolder viewHolder, int direction) {
              notifyItemRemoved(getAdapterPosition());
              notifyItemRangeChanged(getAdapterPosition(), MainActivity.arrList.size());

        }
    });

    itemTouchHelper.attachToRecyclerView(recyclerView);

Problem :

I can delete my recyclerView items and from firebase realtime database too. But when i swipe the item and deleted, the top recycler item comes to the position of recyclerview that I deleted. How can i fix that?

My Source Code:
I am trying to swipe and delete recycler item right here.

private Toolbar toolbar;
public DatabaseReference duyuruRef;
public RecyclerView recyclerView;
ArrayList<Duyuru> duyurular;
RecyclerAdapter recyclerAdapter;


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

    recyclerView = findViewById(R.id.recyclerDelete);
    recyclerView.setLayoutManager(new LinearLayoutManager(this));

    duyuruRef = FirebaseDatabase.getInstance().getReference();
    duyuruRef.keepSynced(true);
    duyurular = new ArrayList<>();

    getDataFromFirebase();
    setUpToolbar();

    ItemTouchHelper helper = new ItemTouchHelper(new ItemTouchHelper.SimpleCallback(0,ItemTouchHelper.LEFT | ItemTouchHelper.RIGHT) {
        @Override
        public boolean onMove(@NonNull RecyclerView recyclerView, @NonNull RecyclerView.ViewHolder viewHolder, @NonNull RecyclerView.ViewHolder viewHolder1) {
            return false;
        }

        @Override
        public void onSwiped(@NonNull RecyclerView.ViewHolder target, int i) {
            Duyuru duyuru = new Duyuru();
            DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
            DatabaseReference duyuruRef = rootRef.child("Duyuru");
            String pid = duyuru.getPid();
            int position = target.getAdapterPosition();
            duyuruRef.child(pid).removeValue();
            duyurular.remove(position);
            recyclerAdapter.notifyDataSetChanged();
        }
    });
    helper.attachToRecyclerView(recyclerView);
}

private void getDataFromFirebase() {
    Query query = duyuruRef.child("Duyuru");
    query.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
            for (DataSnapshot snapshot: dataSnapshot.getChildren()) {
                Duyuru duyuru = new Duyuru();
                duyuru.setDuyuruBaslik(snapshot.child("title").getValue().toString());
                duyuru.setDuyuruContext(snapshot.child("context").getValue().toString());
                duyuru.setDuyuruTime(snapshot.child("time").getValue().toString());
                duyuru.setDuyuruDate(snapshot.child("date").getValue().toString());
                duyuru.setDuyuruYazar(snapshot.child("yazar").getValue().toString());

                duyurular.add(duyuru);
            }
            recyclerAdapter = new RecyclerAdapter(getApplicationContext(),duyurular);
            recyclerView.setAdapter(recyclerAdapter);
            recyclerAdapter.notifyDataSetChanged();
        }

        @Override
        public void onCancelled(@NonNull DatabaseError databaseError) {

        }
    });
}

If you want my RecyclerAdapter it is here:

private Context mContext;
private ArrayList<Duyuru> duyuruArrayList;

public RecyclerAdapter(Context mContext, ArrayList<Duyuru> duyuruArrayList) {
    this.mContext = mContext;
    this.duyuruArrayList = duyuruArrayList;
}

@NonNull
@Override
public RecyclerAdapter.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
    View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.duyuru_items_layout,parent,false);

    return new ViewHolder(view);
}

@Override
public void onBindViewHolder(@NonNull ViewHolder holder, final int position) {
    holder.txtBaslik.setText(duyuruArrayList.get(position).getDuyuruBaslik());
    holder.txtContext.setText(duyuruArrayList.get(position).getDuyuruContext());
    holder.txtYazar.setText(duyuruArrayList.get(position).getDuyuruYazar());
    holder.txtTime.setText(duyuruArrayList.get(position).getDuyuruTime());
    holder.txtDate.setText(duyuruArrayList.get(position).getDuyuruDate());

    holder.parentLayout.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent intent = new Intent(mContext, activity_duyuru_update_screen.class);
            intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            intent.putExtra("baslik",duyuruArrayList.get(position).getDuyuruBaslik());
            intent.putExtra("context",duyuruArrayList.get(position).getDuyuruContext());
            intent.putExtra("yazar",duyuruArrayList.get(position).getDuyuruYazar());
            intent.putExtra("time",duyuruArrayList.get(position).getDuyuruTime());
            intent.putExtra("date",duyuruArrayList.get(position).getDuyuruDate());
            intent.putExtra("pid",duyuruArrayList.get(position).getPid());
            mContext.startActivity(intent);
        }
    });
}

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

public class ViewHolder extends RecyclerView.ViewHolder {

    TextView txtBaslik,txtContext,txtYazar,txtTime,txtDate;
    RelativeLayout parentLayout;

    public ViewHolder(@NonNull View itemView) {
        super(itemView);

        txtBaslik = itemView.findViewById(R.id.ac_cv_duyuru_baslik);
        txtContext = itemView.findViewById(R.id.ac_cv_duyuru_context);
        txtTime = itemView.findViewById(R.id.ac_cv_duyuru_time);
        txtYazar = itemView.findViewById(R.id.ac_cv_duyuru_yazar);
        txtDate = itemView.findViewById(R.id.ac_cv_duyuru_date);
        parentLayout = itemView.findViewById(R.id.ac_items_layout);
    }
}

Comments

Comment posted by Alex Mamo

Please show us a concrete example of that behaviour.

READ  [FIXED] android - Are snapshot images identical on devices with different physical dimensions but with the same pixel dimensions and same dpi
Powered by Inline Related Posts

Comment posted by Pablusha

I showed already look at the ItemTouchHelper class in the activity and RecyclerAdapter onBindViewHolder

Comment posted by Robert Page

oh sorry, I didn’t see that. You can use notifyItemRemoved(getAdapterPosition()); notifyItemRangeChanged(getAdapterPosition(),MainActivity.arrList.size());

Android Tags:android, firebase, firebase-realtime-database, java

Post navigation

Previous Post: [FIXED] Android Studios error : Unable to locate adb location
Next Post: [FIXED] android – Here Maps Navigation samples seem to be missing the Navigation Library

Related Posts

[FIXED] Can I avoid `!!` everywhere when I’m using Android View Binding with Kotlin? Android
[FIXED] Android 11 file not delete from download folder after uninstall an install again Android
[FIXED] java – How to know app’s URL before publishing it? Android
[FIXED] android – Implementing baresip NDK library causes lack of *.so file Android
[FIXED] android – Translating, anuvaad karana or अनुवाद करना Android
[FIXED] android – Room Entity’s data is stored correctly but is retrieved as null Android

Archives

  • April 2023
  • March 2023
  • February 2023
  • January 2023
  • December 2022
  • November 2022
  • October 2022
  • September 2022

Categories

  • ¿Cómo
  • ¿Cuál
  • ¿Cuándo
  • ¿Cuántas
  • ¿Cuánto
  • ¿Qué
  • Android
  • Are
  • At
  • C'est
  • Can
  • Comment
  • Did
  • Do
  • Does
  • Est-ce
  • Est-il
  • For
  • Has
  • Hat
  • How
  • In
  • Is
  • Ist
  • Kann
  • Où
  • Pourquoi
  • Quand
  • Quel
  • Quelle
  • Quelles
  • Quels
  • Qui
  • Should
  • Sind
  • Sollte
  • Uncategorized
  • Wann
  • Warum
  • Was
  • Welche
  • Welchen
  • Welcher
  • Welches
  • Were
  • What
  • What's
  • When
  • Where
  • Which
  • Who
  • Who's
  • Why
  • Wie
  • Will
  • Wird
  • Wo
  • Woher
  • you can create a selvedge edge: You can make the edges of garter stitch more smooth by slipping the first stitch of every row.2022-02-04
  • you really only need to know two patterns: garter stitch

Recent Posts

  • Can Vicks humidifier be used without filter?
  • What color is Spanish green?
  • How old is Jamie in The War That Saved My Life?
  • When should I use scalp massager for hair growth?
  • Can I put polyurethane over liming wax?

Recent Comments

No comments to show.

Copyright © 2023 Snappy1.

Powered by PressBook Grid Dark theme