получить ключевую позицию в базе данных firebase onBindViewHolder - PullRequest
0 голосов
/ 28 сентября 2018

Я хочу получить ключевую позицию в базе данных.

получаю ошибку: getRef(position) : Cannot resolve method 'getRef(int)' on

final String post_key = getRef(position).getKey();

это мой код CustomPostAdapter

public class CustomPostAdapter extends RecyclerView.Adapter<CustomPostAdapter.ViewHolder>{
    public List<Spacecraft> userList ;
    public Context context ;

    private boolean mProcessLike = false ;
    private DatabaseReference mDatabaseLike ;

  //  public ImageView imagePostt ;

    public CustomPostAdapter(Context context , List<Spacecraft> userList){
        this.userList = userList ;
        this.context = context;
    }

    @NonNull
    @Override
    public CustomPostAdapter.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.row_posts_item, parent,false);
        return new CustomPostAdapter.ViewHolder(view);
    }

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


        mDatabaseLike = FirebaseDatabase.getInstance().getReference().child("Likes");
        mDatabaseLike.keepSynced(true);


        final String post_key = getRef(position).getKey();

        final String name =  userList.get(position).getName();
        final String image_post = userList.get(position).getImage_post();
        final String descrip = userList.get(position).getDescrip();
        final String hachatg = userList.get(position).getHachtag();
        final String user = userList.get(position).getUser();
        final String time = userList.get(position).getTime();

        //Text Post
        holder.nameText.setText(name);
        holder.descripText.setText(descrip);
        holder.hachtagText.setText(" " + hachatg);
        holder.timeText.setText(" " + time);


        //Imgae Post if null set Visibtly Gone to ImageView
        if (TextUtils.isEmpty(image_post)){
            holder.imagePostt.setVisibility(View.GONE);

        }else {
            //Image Post
            Picasso.with(context).load(image_post).into(holder.imagePostt , new Callback() {
                @Override
                public void onSuccess() {
                    holder.imagePostt.setVisibility(View.VISIBLE);
                }
                @Override
                public void onError() {
                    holder.imagePostt.setVisibility(View.GONE);
                }
            });
        }

        //Onclick items
        holder.mView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(context , ContentActivity.class);
                intent.putExtra("NAME_KEY", name);
                intent.putExtra("HACHTAG_KEY", hachatg);
                intent.putExtra("DESCRIP_KEY", descrip);
                intent.putExtra("USER_KEY", user);
                intent.putExtra("IMAGE_POST", image_post);


                intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                context.startActivity(intent);
            }
        });

        //Button Like Onclice
        holder.mLikeBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                mProcessLike = true;

                if (mProcessLike){
                    mDatabaseLike.addValueEventListener(new ValueEventListener() {
                        @Override
                        public void onDataChange(DataSnapshot dataSnapshot) {


                            //Chek if user already Like or not
                            if (dataSnapshot.child(post_key).hasChild(user)){



                            }else {

                                mDatabaseLike.child(post_key).child(user).setValue("RandomValue");
                                mProcessLike = false;
                            }

                        }

                        @Override
                        public void onCancelled(DatabaseError databaseError) {

                        }
                    });
                }


            }
        });



    }

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


    public class ViewHolder extends RecyclerView.ViewHolder {

        View mView;

        public TextView nameText , hachtagText , descripText, urlText , timeText;
        public ImageView imagePostt ;
        public ImageButton mLikeBtn ;


        public ViewHolder(View itemView) {
            super(itemView);
            mView = itemView;


            nameText = (TextView)mView.findViewById(R.id.text_nameProblem);
            hachtagText = (TextView)mView.findViewById(R.id.text_nameUser);
          //  urlText = (TextView)mView.findViewById(R.id.textUrl);
            descripText = (TextView)mView.findViewById(R.id.text_Discription);
            timeText = (TextView)mView.findViewById(R.id.timeText);
            imagePostt = (ImageView)mView.findViewById(R.id.imagePost);
            mLikeBtn = (ImageButton)mView.findViewById(R.id.btnLike);




        }
    }
}

Ответы [ 2 ]

0 голосов
/ 29 сентября 2018

Есть два способа решения этой проблемы.Первый будет хранить key как свойство в вашем пользовательском объекте и использовать:

final String key =  userList.get(position).getKey();

А второй будет просто использовать FirebaseRecyclerAdapter вместо этого и вызывать:

mFirebaseRecyclerAdapter.getKey(position);

Как объяснено здесь @ Puf. * ​​1011 *

0 голосов
/ 28 сентября 2018

Вы должны использовать FirebaseRecyclerAdapter, который имеет метод getRef ().перейдите по этой ссылке , чтобы узнать, как ее использовать

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...