如何从 firebase RecyclerView 中删除项目

我目前正在 firebase RecyclerView 的帮助下添加朋友,其中如果用户点击添加按钮,他将被添加到数据库 n 中,需要永久删除点击的项目..那么,如何实现它通过 firebase 模型,因为我们没有任何数据列表可以从中删除..
这是代码
@Override
public void onStart(){

super.onStart(); SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(mContext); EmailPref=prefs.getString("EmailPref", EmailPref); if(EmailPref!=null){final Firebase ref = new Firebase(constants.FIREBASE_URL+"rootssahaj/authGplus"); FirebaseRecyclerAdapter adapter=new FirebaseRecyclerAdapter( FriendsData.class, R.layout.chat_view_list, FriendsViewHolder.class, ref) { @TargetApi(Build.VERSION_CODES.KITKAT) @Override protected void populateViewHolder(FriendsViewHolder friendsViewHolder, FriendsData s, int position) { String key = this.getRef(position).getKey(); Log.e("SahajLOG", "String Keyyy " + key + " n EmailPref" + EmailPref); if (!Objects.equals(key, EmailPref)) { friendsViewHolder.mName.setText(s.getUserNAME()); Picasso.with(context).load(s.getPicurl()).transform(new CircleTransform()).into(friendsViewHolder.mImageProfile); String keylocal = key; Log.e("pavan", "Populate AddF key" + keylocal+" " + position); SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(mContext); prefs.getString("keylocal" + position, keylocal + position); if (keylocal != null) { prefs.edit().putString("keylocal" + position, keylocal + position).commit(); } } else { friendsViewHolder.mCardView.setVisibility(View.GONE); //friendsViewHolder.setVisibility(View.GONE); }} }; recyclerView.setLayoutManager(new LinearLayoutManager(getActivity())); recyclerView.setItemAnimator(new SlideInLeftAnimator()); recyclerView.getItemAnimator().setAddDuration(1000); recyclerView.getItemAnimator().setRemoveDuration(1000); recyclerView.getItemAnimator().setMoveDuration(1000); recyclerView.getItemAnimator().setChangeDuration(1000); SlideInLeftAnimator animator = new SlideInLeftAnimator(); animator.setInterpolator(new OvershootInterpolator()); recyclerView.setItemAnimator(animator); AlphaInAnimationAdapter alphaAdapter = new AlphaInAnimationAdapter(adapter); alphaAdapter.setDuration(500); alphaAdapter.setInterpolator(new OvershootInterpolator(.5f)); alphaAdapter.setFirstOnly(false); recyclerView.setAdapter(new ScaleInAnimationAdapter(alphaAdapter)); }

}
public class FriendsViewHolder extends RecyclerView.ViewHolder{
ImageView mImageProfile; android.widget.TextView mName; private int mVisibility; Boolean CallAdd=false; Button mAdd; String keylocal; CardView mCardView; public FriendsViewHolder(View itemView) { super(itemView); mCardView=(CardView)itemView.findViewById(R.id.cardView); mImageProfile=(ImageView)itemView.findViewById(R.id.profilePICC); mName=(android.widget.TextView)itemView.findViewById(R.id.NameUSER); context = itemView.getContext(); mAdd=(Button)itemView.findViewById(R.id.addButton); SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); if(prefs.getBoolean("CallAdd", CallAdd)){ AddaddButton(); }mAdd.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(mContext); EmailPref = prefs.getString("EmailPref", EmailPref); keylocal=prefs.getString("keylocal"+getAdapterPosition(),keylocal+getAdapterPosition()); final Firebase mFirebaseRef = new Firebase(constants.FIREBASE_URL + "rootssahaj/authGplus/"+ EmailPref); mFirebaseRef.child("friends").child(keylocal).setValue("true"); Log.e("pavan", "Chat Adapter " + EmailPref + keylocal + " final key: " + keylocal); //remove(getAdapterPosition()); } }); } public void AddaddButton(){ if (mAdd.getVisibility() == View.INVISIBLE) { mAdd.setVisibility(View.VISIBLE); } }

}
解决方案
如果您查看此代码,它会在以下情况下从 Firebase 中删除一条注释单击注释.如果您了解 Firebase 查询,这似乎很简单.一旦 RecyclerView 适配器设置正确,这也将更新 RecyclerView.您不需要数据列表,只需要您要删除的内容的值,例如 ID 或键.
【如何从 firebase RecyclerView 中删除项目】@Override
public void onLongClick(View v, int i) { mquery.orderByChild("text") .equalTo((String) notes.get(i).getName()) .addListenerForSingleValueEvent(new ValueEventListener() { public void onDataChange(DataSnapshot dataSnapshot) { if (dataSnapshot.hasChildren()) { DataSnapshot firstChild = dataSnapshot.getChildren().iterator().next(); firstChild.getRef().removeValue(); } }public void onCancelled(FirebaseError firebaseError) { } });

来自https://www.itbaoku.cn/ .大多数情况下,我只是复制和粘贴.这是一个抽象类,可用于为 Firebase 数据库制作 RecyclerView 适配器.所有代码都在该 GitHub 存储库中.这是 FirebaseRecyclerAdapter.class 中的一个片段,它从 Firebase 中删除了该值并更新了 recyclerView:
@Override
public void onChildRemoved(DataSnapshot dataSnapshot) { String key = dataSnapshot.getKey(); if (mKeys.contains(key)) { int index = mKeys.indexOf(key); T item = mItems.get(index); mKeys.remove(index); mItems.remove(index); notifyItemRemoved(index); itemRemoved(item, key, index); } }

更新:您可以在 RecyclerView 适配器的 Viewholder 中隐藏视图.在 stackoverflow 中查看这些答案 在 RecyclerView 中隐藏视图
原文地址:https://www.itbaoku.cn/post/2...

    推荐阅读