【问题标题】:android firebase realtimedatabase Questions(recycler view, onclick button, remove)android firebase 实时数据库问题(recyclerview、onclick 按钮、删除)
【发布时间】:2020-11-15 11:03:02
【问题描述】:

我希望在单击 item1 上的按钮时删除 item1 的数据。 但是mDatabase.getReference("Choicestore").child(String.valueOf(arrayList.get(position))); 我不知道如何处理这部分。

我希望在单击 item1 上的按钮时删除 item1 的数据。我希望在单击 item2 上的按钮时删除 item2 的数据。

@Override
public void onBindViewHolder(@NonNull final ChoicestoreViewHolder holder, final int position) {

    Glide.with(holder.itemView)
            .load(arrayList.get(position).getChoicestore_img())
            .into(holder.choicestore_img);
    holder.choicestore_name.setText("storename : " + arrayList.get(position).getChoicestore_name());
    holder.choicestore_time.setText("opentime : " + arrayList.get(position).getChoicestore_time());
    holder.choicestore_breaktime.setText("breaktime : " +arrayList.get(position).getChoicestore_breaktime());
    holder.choicestore_number.setText("storenumber : " + arrayList.get(position).getChoicestore_number());

    holder.choicestore_delete.setOnClickListener(new View.OnClickListener(){
        @Override
        public void onClick(View v) {

            mDatabase = FirebaseDatabase.getInstance();
            dataRef = mDatabase.getReference("Choicestore").child(String.valueOf(arrayList.get(position)));

            dataRef.removeValue();

        }
    });
}

我使用以下答案进行编码,但出现此错误。


Error Image

@Override
public void onBindViewHolder(@NonNull final ChoicestoreViewHolder holder, final int position) {

    Glide.with(holder.itemView)
            .load(arrayList.get(position).getChoicestore_img())
            .into(holder.choicestore_img);
    holder.choicestore_name.setText("매장명 : " + arrayList.get(position).getChoicestore_name());
    holder.choicestore_time.setText("운영시간 : " + arrayList.get(position).getChoicestore_time());
    holder.choicestore_breaktime.setText("브레이크타임 : " +arrayList.get(position).getChoicestore_breaktime());
    holder.choicestore_number.setText("매장번호 : " + arrayList.get(position).getChoicestore_number());

    holder.choicestore_delete.setOnClickListener(new View.OnClickListener(){

        @Override
        public void onClick(View view) {
            final String NAme= arrayList.get(position).getChoicestore_name();


            dataRef.orderByChild("choicestore_name")
                    .equalTo( NAme )
                    .addListenerForSingleValueEvent(new ValueEventListener() {
                        @Override
                        public void onDataChange(DataSnapshot dataSnapshot) {
                            for (DataSnapshot childSnapshot : dataSnapshot.getChildren()) {
                                String clubkey = childSnapshot.getKey();

                                Log.d(TAG, "KEY = " + clubkey );


                                childSnapshot.getRef().removeValue();


                            }

                        }

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

                        }

                    });
        }
    });



}

这是发生错误的代码。

【问题讨论】:

  • 链接的图像是数据库图像,我希望在单击 item1 上的按钮时删除choicestore01 的数据。我希望在单击 item2 上的按钮时删除choicestore02 的数据。
  • 使用addListenerForSingleValueEvent 获取密钥。在您的情况下,键表示choicestore01,然后删除该节点
  • 在onClick方法中添加这一行dataRef = FirebaseDatabase.getInstance().getReference( "Choicestore" );
  • 感谢您的帮助。它工作正常。谢谢你!!

标签: android firebase-realtime-database android-recyclerview


【解决方案1】:

内部holder.choicestore_delete.setOnClickListener

final String NAme= arrayList.get(position).getChoicestore_name();


                            mDatabasesliderRef.orderByChild("choicestore_name")
                                    .equalTo( NAme )
                                    .addListenerForSingleValueEvent(new ValueEventListener() {
                                        @Override
                                        public void onDataChange(DataSnapshot dataSnapshot) {
                                            for (DataSnapshot childSnapshot : dataSnapshot.getChildren()) {
                                                String clubkey = childSnapshot.getKey();

                                                Log.d( TAG, "KEY = " + clubkey );


                                                    childSnapshot.getRef().removeValue();


                                            }

                                        }

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

                                        }

                                    });

【讨论】:

  • 你好@tiitititi,它有效吗?如果有效,请接受我的回答,以便帮助其他人。
  • 抱歉迟到了。我迟到了,因为我是初学者,我不明白错误。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-10-05
  • 2022-01-13
  • 1970-01-01
  • 1970-01-01
  • 2019-04-13
  • 2021-06-04
  • 1970-01-01
相关资源
最近更新 更多