因此,我试图通过单击带有图片和文字的卡片视图来吸引用户专业(电影,演员,老师)。我已经设法将数据发送到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);
}
}
}