热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

关于java:如何从firebaseRecyclerView中删除项目

我目前正在firebaseRecyclerView的帮忙下增加敌人,其中如果用户点击增加按钮,他将被增加到数据库n中,须要永恒删除点击的我的项目..那么,如何实现它通过fireba

我目前正在 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 或键.

@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 中暗藏视图



推荐阅读
  • 在Android应用开发中,实现与MySQL数据库的连接是一项重要的技术任务。本文详细介绍了Android连接MySQL数据库的操作流程和技术要点。首先,Android平台提供了SQLiteOpenHelper类作为数据库辅助工具,用于创建或打开数据库。开发者可以通过继承并扩展该类,实现对数据库的初始化和版本管理。此外,文章还探讨了使用第三方库如Retrofit或Volley进行网络请求,以及如何通过JSON格式交换数据,确保与MySQL服务器的高效通信。 ... [详细]
  • 深入解析 Django 中用户模型的自定义方法与技巧 ... [详细]
  • 类加载机制是Java虚拟机运行时的重要组成部分。本文深入解析了类加载过程的第二阶段,详细阐述了从类被加载到虚拟机内存开始,直至其从内存中卸载的整个生命周期。这一过程中,类经历了加载(Loading)、验证(Verification)等多个关键步骤。通过具体的实例和代码示例,本文探讨了每个阶段的具体操作和潜在问题,帮助读者全面理解类加载机制的内部运作。 ... [详细]
  • 基于Net Core 3.0与Web API的前后端分离开发:Vue.js在前端的应用
    本文介绍了如何使用Net Core 3.0和Web API进行前后端分离开发,并重点探讨了Vue.js在前端的应用。后端采用MySQL数据库和EF Core框架进行数据操作,开发环境为Windows 10和Visual Studio 2019,MySQL服务器版本为8.0.16。文章详细描述了API项目的创建过程、启动步骤以及必要的插件安装,为开发者提供了一套完整的开发指南。 ... [详细]
  • Unity与MySQL连接过程中出现的新挑战及解决方案探析 ... [详细]
  • 使用种子数据在Asp.NET Core 3.0 Web API迁移过程中写入数据库的详细步骤
    本文详细阐述了如何在Asp.NET Core 3.0 Web API的迁移过程中利用种子数据将信息写入数据库的具体步骤。对于开发人员而言,掌握这一技术能够显著提高数据初始化的效率和准确性。文章不仅提供了详细的代码示例,还深入解析了每个步骤背后的原理,帮助读者更好地理解和应用这一方法。 ... [详细]
  • 深入剖析Java中SimpleDateFormat在多线程环境下的潜在风险与解决方案
    深入剖析Java中SimpleDateFormat在多线程环境下的潜在风险与解决方案 ... [详细]
  • 使用 ListView 浏览安卓系统中的回收站文件 ... [详细]
  • C++ 异步编程中获取线程执行结果的方法与技巧及其在前端开发中的应用探讨
    本文探讨了C++异步编程中获取线程执行结果的方法与技巧,并深入分析了这些技术在前端开发中的应用。通过对比不同的异步编程模型,本文详细介绍了如何高效地处理多线程任务,确保程序的稳定性和性能。同时,文章还结合实际案例,展示了这些方法在前端异步编程中的具体实现和优化策略。 ... [详细]
  • 使用Maven JAR插件将单个或多个文件及其依赖项合并为一个可引用的JAR包
    本文介绍了如何利用Maven中的maven-assembly-plugin插件将单个或多个Java文件及其依赖项打包成一个可引用的JAR文件。首先,需要创建一个新的Maven项目,并将待打包的Java文件复制到该项目中。通过配置maven-assembly-plugin,可以实现将所有文件及其依赖项合并为一个独立的JAR包,方便在其他项目中引用和使用。此外,该方法还支持自定义装配描述符,以满足不同场景下的需求。 ... [详细]
  • 分享一款基于Java开发的经典贪吃蛇游戏实现
    本文介绍了一款使用Java语言开发的经典贪吃蛇游戏的实现。游戏主要由两个核心类组成:`GameFrame` 和 `GamePanel`。`GameFrame` 类负责设置游戏窗口的标题、关闭按钮以及是否允许调整窗口大小,并初始化数据模型以支持绘制操作。`GamePanel` 类则负责管理游戏中的蛇和苹果的逻辑与渲染,确保游戏的流畅运行和良好的用户体验。 ... [详细]
  • 本文介绍了如何利用ObjectMapper实现JSON与JavaBean之间的高效转换。ObjectMapper是Jackson库的核心组件,能够便捷地将Java对象序列化为JSON格式,并支持从JSON、XML以及文件等多种数据源反序列化为Java对象。此外,还探讨了在实际应用中如何优化转换性能,以提升系统整体效率。 ... [详细]
  • 深入解析 Android 中 EditText 的 getLayoutParams 方法及其代码应用实例 ... [详细]
  • 本文探讨了 Java 中 Pair 类的历史与现状。虽然 Java 标准库中没有内置的 Pair 类,但社区和第三方库提供了多种实现方式,如 Apache Commons 的 Pair 类和 JavaFX 的 javafx.util.Pair 类。这些实现为需要处理成对数据的开发者提供了便利。此外,文章还讨论了为何标准库未包含 Pair 类的原因,以及在现代 Java 开发中使用 Pair 类的最佳实践。 ... [详细]
  • MVVM架构~mvc,mvp,mvvm大话开篇
    返回目录百度百科的定义:MVP是从经典的模式MVC演变而来,它们的基本思想有相通的地方:ControllerPresenter负责逻辑的处理,Model提供数据,View负责显示。作为一种新的模 ... [详细]
author-avatar
jin冫g_-_-
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有