如何不覆盖child,Firebase数据库中的值

时间:2019-03-26 10:39:02

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

因此,我试图通过单击带有图片和文字的卡片视图来吸引用户专业(电影,演员,老师)。我已经设法将数据发送到Firebase,但是如果我单击其他卡,它将替换现有值。我希望用户可以选择多个选项。

我试图将其更改为

'''Map userInfo = new HashMap();
                userInfo.put("Major",mNames);,,,,

但是它只是按照我希望的方式添加了所有卡片,但问题是它甚至添加了未选中的卡片。

package com.verb;

import android.content.Context;
import android.content.Intent;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Filter;
import android.widget.Filterable;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;

import com.bumptech.glide.Glide;
import com.bumptech.glide.request.RequestOptions;
import com.google.android.gms.tasks.OnSuccessListener;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;

import java.lang.reflect.Array;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;

import androidx.recyclerview.widget.RecyclerView;

/**
 * Created by Octa on 1/17/2018.
 */

public class StaggeredRecyclerViewAdapter extends RecyclerView.Adapter<StaggeredRecyclerViewAdapter.ViewHolder>{

    private static final String TAG = "StaggeredRecyclerViewAd";

    private FirebaseAuth mAuth;

    private DatabaseReference mUserDatabase;

    private String userId;

    private ArrayList<String> mNames = new ArrayList<>();
    private ArrayList<String> mImageUrls = new ArrayList<>();

    private ImageView mselected;

    private Context mContext;

    public StaggeredRecyclerViewAdapter(Context context, ArrayList<String> names, ArrayList<String> imageUrls) {
        mNames = names;
        mImageUrls = imageUrls;
        mContext = context;
    }

    @Override
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {

        mAuth = FirebaseAuth.getInstance();
        //This line gets the users Id which is automatically generated by the Firebase Database On OTP auth success//
        userId = mAuth.getCurrentUser().getUid();
        // This line Connects the user to their Database //
        mUserDatabase = FirebaseDatabase.getInstance().getReference().child("Users").child(userId);

        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.layout_grid_item, parent, false);
        return new ViewHolder(view);
    }

    @Override
    public void onBindViewHolder(ViewHolder holder, final int position) {
        Log.d(TAG, "onBindViewHolder: called.");

        RequestOptions requestOptions = new RequestOptions()
                .placeholder(R.drawable.ic_launcher_background);

        Glide.with(mContext)
                .load(mImageUrls.get(position))
                .apply(requestOptions)
                .into(holder.image);

        holder.name.setText(mNames.get(position));


        ''''holder.image.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Log.d(TAG, "onClick: clicked on: " + mNames.get(position));
                Toast.makeText(mContext, mNames.get(position), Toast.LENGTH_SHORT).show();

                Map userInfo = new HashMap();
                userInfo.put("Major",mNames.get(position));

                mUserDatabase.updateChildren(userInfo).addOnSuccessListener(new OnSuccessListener() {
                    @Override
                    public void onSuccess(Object o) {


                    }
                });

            }
        }); ,,,,,

    }

    @Override
    public int getItemCount() {
        return mImageUrls.size();
    }



    public class ViewHolder extends RecyclerView.ViewHolder{

        ImageView image;
        TextView name;

        public ViewHolder(View itemView) {
            super(itemView);
            this.image = itemView.findViewById(R.id.imageview_widget);
            this.name = itemView.findViewById(R.id.name_widget);

        }
    }


}

0 个答案:

没有答案