在RecycleView中查看Firebase中的照片

我想如何将setOnClicklistener函数添加到我的代码中,并将继续单击记录的信息推送到另一个活动。 我不知道该怎么做。 我很高兴接受帮助。 谢谢。

我已附上我正在使用的两段代码: 这是我的课程recycle_recipe.java

package com.lee.app1_new;
import android.content.Context;
import android.media.Image;
import android.support.annotation.NonNull;
import android.support.v7.app.AppCompatactivity;
import android.os.Bundle;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;

import com.firebase.ui.database.FirebaseRecyclerAdapter;


import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.squareup.picasso.Picasso;

public class recycle_recipe extends AppCompatactivity {

    private RecyclerView mRlist;
    private DatabaseReference mDatabase;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_recycle_recipe);

        mDatabase = FirebaseDatabase.getInstance().getReference().child("cake");
        mDatabase.keepSynced(true);
        mRlist = findViewById(R.id.recycle);
        // mRlist.setHasFixedSize(true);
        mRlist.setLayoutManager(new LinearLayoutManager(this));


    }

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


        FirebaseRecyclerAdapter < adCake,adCakeViewHolder > firebaseRecyclerAdapter = new FirebaseRecyclerAdapter < adCake,adCakeViewHolder >
                (adCake.class,R.layout.recip_card,adCakeViewHolder.class,mDatabase) {
            @Override
            protected void populateViewHolder(adCakeViewHolder viewHolder,adCake model,int position) {
                viewHolder.setName(model.getName());
                viewHolder.setIng(model.getIngredients());
                viewHolder.setPrep(model.getPreparation());
                viewHolder.setImg(getapplicationContext(),model.getImage());

            }

        };

        mRlist.setadapter(firebaseRecyclerAdapter);
    }

    public static class adCakeViewHolder extends RecyclerView.ViewHolder {
        View mView;

        public adCakeViewHolder(@NonNull View itemView) {
            super(itemView);
            mView = itemView;
        }
        public void setName(String name) {
            TextView post_name = (TextView) mView.findViewById(R.id.name);
            post_name.setText(name);
        }
        public void setIng(String ing) {
            TextView post_ing = (TextView) mView.findViewById(R.id.ingredients);
            post_ing.setText(ing);
        }
        public void setPrep(String prep) {
            TextView post_prep = (TextView) mView.findViewById(R.id.preparation);
            post_prep.setText(prep);
        }
        public void setImg(Context ctx,String img) {
            ImageView post_img = (ImageView) mView.findViewById(R.id.image);
            Picasso.with(ctx).load(img).into(post_img);
        }
    }
}

这是我的课程adCake.java(在这里我设置变量):

package com.lee.app1_new;
public class adCake {

    private String image;
    private String name;
    private String ingredients;
    private String preparation;


    public adCake(String image,String name,String ingredients,String preparation) {
        this.image = image;
        this.name = name;
        this.ingredients = ingredients;
        this.preparation = preparation;
    }

    public void setImage(String image) {
        this.image = image;
    }
    public String getImage() {
        return image;
    }

    public void setName(String name) {
        this.name = name;
    }
    public String getName() {
        return name;
    }


    public void setIngredients(String ingredients) {
        this.ingredients = ingredients;
    }

    public void setPreparation(String preparation) {
        this.preparation = preparation;
    }

    public String getIngredients() {
        return ingredients;
    }

    public String getPreparation() {
        return preparation;
    }
    public adCake() {
        super();
    }
}`    
weichaochenweichao 回答:在RecycleView中查看Firebase中的照片

只需将Parcelable Offical Implementation of Parcelable添加到您的Model(Pojo)类。 然后尝试从您的adCakeViewHolder类中获取视图,并向其添加点击侦听器。

public class adCake implements Parcelable {

}


  public static class adCakeViewHolder extends RecyclerView.ViewHolder {
      View mView; //this view will help you to implement click listener 

      public adCakeViewHolder(@NonNull View itemView) {
       super(itemView);
       mView = itemView;
      }


     public View getItemView() {
       return mView;
      }

    }




 FirebaseRecyclerAdapter < adCake,adCakeViewHolder > firebaseRecyclerAdapter = new FirebaseRecyclerAdapter < adCake,adCakeViewHolder >
       (adCake.class,R.layout.recip_card,adCakeViewHolder.class,mDatabase) {
        @Override
        protected void populateViewHolder(adCakeViewHolder viewHolder,adCake model,int position) {
         viewHolder.getItemView().setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                 Intent i = new Intent(context,NextActivity.class);
                 i.putExtra("adCake",model);
                 startActivity(i);                      
                }
            });

 viewHolder.getItemView().addOnItemTouchListener(new RecyclerItemClickListener(this,new RecyclerItemClickListener.OnItemClickListener() {
        @Override
        public void onItemClick(View view,int position) {

             Intent i = new Intent(context,model);
                 startActivity(i); 
        }
    }));

 viewHolder.setOnClickListener(new FirebaseViewHolder.ClickListener() {
                    @Override
                    public void onItemClick(View view,int position) {
                        Toast.makeText(getActivity(),"Item clicked at " + position,Toast.LENGTH_SHORT).show();
                    }


                });


            }

           };
  

或创建接口以发送回调...

 private FirebaseViewHolder.ClickListener mClickListener;
public void setOnClickListener(FirebaseViewHolder.ClickListener clickListener) 
    {
        mClickListener = clickListener;
    }


public interface ClickListener{
    public void onItemClick(View view);

}
本文链接:https://www.f2er.com/3161039.html

大家都在问