【问题标题】:How to Delete the Firebase database Key from Recycle view based on position如何根据位置从回收视图中删除 Firebase 数据库密钥
【发布时间】:2018-09-03 16:12:08
【问题描述】:

我正在构建一个应用程序作为献血的大学项目,用户可以使用 Firebase 身份验证电子邮件和密码进行注册,并可以发布对血液的请求,然后将其添加到 Firebase 数据库中,该数据库显示在应用程序内的回收视图中 我能够完成那部分。

现在我想添加按钮,该按钮将在回收视图中可见,如果他愿意,可以选择删除请求,以防他收到捐赠者的电话或不再需要。但是这个按钮应该只对发布请求的用户可见,并且对于回收适配器内的其他帮助发布保持隐藏。

当他点击按钮时,它也应该从 Firebase 数据库中删除特定的数据。

总结一下。 1. 我需要仅对发布帮助请求的用户可见的按钮,如果他愿意,该按钮将删除该帖子

  1. 在该按钮的点击事件中,也会从 Firebase 数据库中删除特定帖子

我正在使用电子邮件和密码的 Firebase 身份验证。

这是 Firebase 数据库结构

这是用户想要上传帮助请求并添加的代码 也可以用于 Firebase 数据

public class EnquiryActivity extends AppCompatActivity {

    //UI
    Button btnRequest;
    EditText edtName,edtBlood,edtPlace,edtMobile,edtEmail;
    //DB
    DatabaseReference mHelper;
    FirebaseAuth mAuth;
    //progress
    ProgressDialog mProgress;
    @Override
    protected void onCreate(final Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_enquiry);
        //initialisation
        edtBlood=(EditText)findViewById(R.id.enq_blood);
        edtMobile=(EditText)findViewById(R.id.enq_mobile);
        edtEmail=(EditText)findViewById(R.id.enq_email);
        edtName=(EditText)findViewById(R.id.enq_name);
        edtPlace=(EditText)findViewById(R.id.enq_place);
        btnRequest=(Button)findViewById(R.id.button2);
        //firebase
        mHelper= FirebaseDatabase.getInstance().getReference();
        final String mCurrentUser=FirebaseAuth.getInstance().getCurrentUser().getUid().toString();
        mAuth=FirebaseAuth.getInstance();
        //progress
        mProgress=new ProgressDialog(this);
        mProgress.setTitle("Loading");
        mProgress.setMessage("Please wait..");

        btnRequest.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                mProgress.show();
                String blood=edtBlood.getText().toString();
                String name=edtName.getText().toString();
                String mobile=edtMobile.getText().toString();
                String email=edtMobile.getText().toString();
                String  place=edtPlace.getText().toString();
                String temp=blood.toUpperCase();
                if(!TextUtils.isEmpty(blood)||!TextUtils.isEmpty(name)||!TextUtils.isEmpty(mobile)||
                        !TextUtils.isEmpty(place)){

                        HashMap<String, String> userMap = new HashMap<>();
                        userMap.put("name", name);
                        userMap.put("blood_group","Blood Group:- " + blood);
                        userMap.put("email", email);
                        userMap.put("mobile", mobile);
                        userMap.put("place","Location:- " + place);

                        mHelper.child("Help").child(mCurrentUser).setValue(userMap).addOnCompleteListener(new OnCompleteListener<Void>() {
                            @Override
                            public void onComplete(@NonNull Task<Void> task) {
                                mProgress.dismiss();
                                Toast.makeText(getApplicationContext(), "Registered Successfully..!", Toast.LENGTH_LONG).show();
                                Intent intent = new Intent(getApplicationContext(), MainActivity.class);
                                intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
                                startActivity(intent);
                            }
                        });

            }else{
                    Toast.makeText(getApplicationContext(),"Please enter the details in all fields",Toast.LENGTH_LONG).show();
                }
            }
        });


    }
}

这是显示帮助帖子列表的代码,包括发布他/她自己的用户

 * A simple {@link Fragment} subclass.
 */
public class NeedHelpFragment extends Fragment {

    FloatingActionButton floatingActionButton;
    private View mMainView;
    private RecyclerView mHelpList;
    private DatabaseReference mUsersDatabase;
    private DatabaseReference mUsers;

    private FirebaseAuth mAuth;

    private String mCurrent_user_id;

    public NeedHelpFragment() {
        // Required empty public constructor
    }


    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        mMainView = inflater.inflate(R.layout.fragment_need_help, container, false);
        floatingActionButton = (FloatingActionButton) mMainView.findViewById(R.id.float_add);
        floatingActionButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                startActivity(new Intent(getActivity(), EnquiryActivity.class));
            }
        });

        //init
        mHelpList = (RecyclerView) mMainView.findViewById(R.id.need_recyclerview);
        mAuth = FirebaseAuth.getInstance();
        mUsersDatabase = FirebaseDatabase.getInstance().getReference().child("Help");
        mUsers = FirebaseDatabase.getInstance().getReference().child("Users");
        mCurrent_user_id = mAuth.getCurrentUser().getUid();

        //
        mHelpList.setHasFixedSize(true);
        LinearLayoutManager linearVertical = new LinearLayoutManager(getContext(), LinearLayoutManager.VERTICAL, false);
        mHelpList.setLayoutManager(linearVertical);

        DividerItemDecoration mDividerItemDecoration = new DividerItemDecoration(
                mHelpList.getContext(),
                linearVertical.getOrientation()
        );
        mHelpList.addItemDecoration(mDividerItemDecoration);
        return mMainView;
    }

    @Override
    public void onStart() {
        super.onStart();

        FirebaseRecyclerAdapter<Help, HelpViewHolder> friendsRecyclerViewAdapter = new FirebaseRecyclerAdapter<Help, HelpViewHolder>(

                Help.class,
                R.layout.help_single_layout,
                HelpViewHolder.class,
                mUsersDatabase) {
            @Override
            protected void populateViewHolder(final HelpViewHolder helpViewHolder, Help help, int i) {

                helpViewHolder.setDate(help.getDate());

                final String list_user_id = getRef(i).getKey();

                mUsersDatabase.child(list_user_id).addValueEventListener(new ValueEventListener() {
                    @Override
                    public void onDataChange(DataSnapshot dataSnapshot) {
                        final String userName = dataSnapshot.child("name").getValue().toString();
                        String blood = dataSnapshot.child("blood_group").getValue().toString();
                        final String phone = dataSnapshot.child("mobile").getValue().toString();
                        final String email = dataSnapshot.child("email").getValue().toString();
                        String address = dataSnapshot.child("place").getValue().toString();


                        helpViewHolder.setName(userName);
                        helpViewHolder.setBlood(blood);
                        helpViewHolder.setAddress(address);
                        helpViewHolder.setPhone(phone);
                        helpViewHolder.setEmail(email);
                        helpViewHolder.mView.setOnClickListener(new View.OnClickListener() {
                            @Override
                            public void onClick(View view) {

                                CharSequence options[] = new CharSequence[]{"Email", "Call"};

                                final AlertDialog.Builder builder = new AlertDialog.Builder(getContext());

                                builder.setTitle("Select Options");
                                builder.setItems(options, new DialogInterface.OnClickListener() {
                                    @Override
                                    public void onClick(DialogInterface dialogInterface, int i) {

                                        //Click Event for each item.
                                        if (i == 0) {

                                        }

                                        if (i == 1) {

                                            String uri = phone;


                                            if (ActivityCompat.checkSelfPermission(getActivity(), android.Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED) {



                                            }

                                        }

                                    }
                                });

                                builder.show();

                            }
                        });


                    }

                    @Override
                    public void onCancelled(DatabaseError databaseError) {

                    }
                });

            }
        };

        mHelpList.setAdapter(friendsRecyclerViewAdapter);


    }

    // viewholder class..

    public static class HelpViewHolder extends RecyclerView.ViewHolder {
        View mView;
        public HelpViewHolder(View itemView) {
            super(itemView);
            mView = itemView;
        }
        public void setBlood(String blood){
            TextView userStatusView = (TextView) mView.findViewById(R.id.help_blood);
            userStatusView.setText(blood.toUpperCase());
        }
        public void setName(String name){

            TextView userNameView = (TextView) mView.findViewById(R.id.help_name);
            userNameView.setText(name.toUpperCase());
        }
        public void setPhone(String phone){

            TextView userNameView = (TextView) mView.findViewById(R.id.help_mobile);
            userNameView.setText(phone);
        }


        public void setEmail(String name){

            TextView userNameView = (TextView) mView.findViewById(R.id.help_email);
            userNameView.setText(name.toUpperCase());
        }


        public void setAddress(String address) {

            TextView userNameView = (TextView) mView.findViewById(R.id.help_place);
            address.toUpperCase();
            userNameView.setText(address.toUpperCase());
        }
        public void setDate(String date){


        }
    }

}

非常感谢任何帮助

提前致谢。

【问题讨论】:

  • 请不要将 sn-ps 用于不可运行的代码。而是使用正常的代码格式。

标签: java android firebase firebase-realtime-database


【解决方案1】:

在您的 help_single_layout 中添加删除按钮。并在 firebase 数据库中添加一个新键 posted 以检查该用户是否发布。在此基础上,您可以定义 Delete 按钮的可见性。

【讨论】:

  • 感谢 Ankit 的友好反馈。我差点失去希望……!!请您给我一些详细信息....我应该添加与电子邮件一起发布的密钥,姓名,手机号码吗?如上面的代码中给出的还是单独的?如果您需要,我会尽快为您提供整个项目的链接。
猜你喜欢
  • 2020-08-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多