0

我想如何将函数 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();
    }
}`    
4

1 回答 1

0

只需将Parcelable 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, NextActivity.class);
                 i.putExtra("adCake", 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);

}
于 2019-11-06T05:52:22.180 回答