ITPub博客

首页 > 应用开发 > Java > 如何从 firebase RecyclerView 中删除项目

如何从 firebase RecyclerView 中删除项目

Java 作者:程序员新人 时间:2021-09-08 14:42:59 0 删除 编辑

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

这是代码

@Overridepublic 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<FriendsData,FriendsViewHolder> adapter=new FirebaseRecyclerAdapter<FriendsData, FriendsViewHolder>(FriendsData.class,R.layout.chat_view_list,FriendsViewHolder.class,ref) {@TargetApi(Build.VERSION_CODES.KITKAT)@Overrideprotected 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() {@Overridepublic 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 或键.

@Overridepublic 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:

@Overridepublic 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/2468092/How-to-remove-items-from-firebase-RecyclerView


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70006492/viewspace-2791016/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: 没有了~
下一篇: /etc/group文件详解
请登录后发表评论 登录
全部评论

注册时间:2021-09-08

  • 博文量
    2
  • 访问量
    939