Java 如何在不依赖于位置的recyclerview上设置OnClickListener

Java 如何在不依赖于位置的recyclerview上设置OnClickListener,java,Java,我希望onclicklistener方法打开与对象相关的活动:entidad1、entidad2或entidad3 MainActivity.java上的OnRecipe方法,我希望它能让我知道,如果entidad1出现,它会让我进入x活动,如果entidad2出现在y活动,那么我知道怎么做,因为现在我会一直进入entidad1的活动。我想这一定与使用优先级来决定打开哪个位置而不是位置有关 这是我的适配器: package com.test.platos_4; 导入android.support

我希望onclicklistener方法打开与对象相关的活动:entidad1、entidad2或entidad3

MainActivity.java上的OnRecipe方法,我希望它能让我知道,如果entidad1出现,它会让我进入x活动,如果entidad2出现在y活动,那么我知道怎么做,因为现在我会一直进入entidad1的活动。我想这一定与使用优先级来决定打开哪个位置而不是位置有关

这是我的适配器:

package com.test.platos_4;
导入android.support.v7.widget.RecyclerView;
导入android.view.LayoutInflater;
导入android.view.view;
导入android.view.ViewGroup;
导入android.widget.ImageView;
导入android.widget.RatingBar;
导入android.widget.TextView;
导入java.util.List;
公共类适配器2扩展了RecyclerView.Adapter
{
私人物品清单;
私人收信人;
公共适配器2(列表项,接收者接收者接收者接收者){
this.listItems=listItems;
this.mOnRecipeListener=onRecipeListener;
}
@凌驾
public ViewHolder onCreateViewHolder(视图组父级,int-viewType){
View=LayoutInflater.from(parent.getContext()).flate(R.layout.elemento_lista2,parent,false);
返回新的ViewHolder(视图,mOnRecipeListener);
}
@凌驾
公共无效onBindViewHolder(ViewHolder ViewHolder,int位置){
int resource=listItems.get(position.getImgFoto();
String title=listItems.get(position.getTitulo();
字符串时间=listItems.get(位置).getTiempo();
int barra=listItems.get(position.getRating();
//int fondo=listItems.get(position.getColorfondo();
设置数据(资源、标题、时间、巴拉);
//设置数据(资源、标题、时间、barra、fondo);
}
@凌驾
public int getItemCount(){
返回listItems.size();
}
类ViewHolder扩展了RecyclerView.ViewHolder实现了View.OnClickListener{
私有ImageView imgFoto;
私有文本视图titulo;
私有文本视图tiempo;
私人评级杆评级杆;
//私有ImageView colorfondo;
接受者接受者接受者接受者;
公共视图持有者(查看项目视图、接收者接收者接收者接收者接收者){
超级(项目视图);
imgFoto=itemView.findviewbyd(R.id.imgFoto);
titulo=itemView.findviewbyd(R.id.tvititulo);
tiempo=itemView.findviewbyd(R.id.tvTiempo);
ratingBar=itemView.findViewById(R.id.ratingBarVerd);
//colorfondo=itemView.findviewbyd(R.id.colorfondo);
this.onRecipeListener=onRecipeListener;
setOnClickListener(这个);
}
//por si necesito color de fondo private void setData(整数资源、字符串标题、字符串时间、整数巴拉、整数fondo){
私有void setData(int资源、字符串标题、字符串时间、int barra){
imgFoto.setImageResource(资源);
titulo.setText(标题);
tiempo.setText(时间);
额定杆设置(巴拉);
//setImageResource(fondo);
}
@凌驾
公共void onClick(视图v){
onRecipeListener.OnRecipe(getAdapterPosition());
}
}
RecipeListener上的公共接口{
void OnRecipe(int优先级);
}
}
这就是MainActivity.java:

公共类Comida扩展AppCompatActivity实现Adapter2.OnRecipeListener{
私人回收站查看回收站查看1;
列出清单项目;
适配器2适配器;
私人实体2实体1、实体2、实体3;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
requestWindowFeature(窗口。功能\u无\u标题);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_全屏,
WindowManager.LayoutParams.FLAG(全屏);
setContentView(R.layout.activity_comida);
recyclerView1=findViewById(R.id.lv_1);
LinearLayoutManager layoutManager=新的LinearLayoutManager(此);
layoutManager.setOrientation(LinearLayoutManager.VERTICAL);
RecycleServiceW1.setLayoutManager(layoutManager);
listItems=new ArrayList();
entidad1=新Entidad2(R.drawable.calabacines_3,“Solomillo a la plancha”,“10分钟”,4,20);
entidad2=新entidad2(R.drawable.patatas_deluxe_Specialiadas_70523_300_150,“Entercot”,“15分钟”,2,50);
entidad3=新的Entidad2(R.drawable.tomate,“汉堡”,“2分钟”,5100);
listItems.add(entidad1);
listItems.add(entidad2);
listItems.add(entidad3);
适配器=新适配器2(列表项,本);
再循环器1.设置适配器(适配器);
adaptor.notifyDataSetChanged();
pickEntidad();
}
@凌驾
公共void OnRecipe(int优先级){
如果(优先级==20){
Intent in=新Intent(这个,Solomillo.class);
星触觉(in);
}
如果(优先级==50){
Intent in=新的Intent(此,Entrecot.class);
星触觉(in);
}
如果(优先级==100){
Intent in=新的Intent(本,Hamburguesa.class);
星触觉(in);
}
}
私有void pickEntidad(){
final int random=new random().nextInt(101);
int priority1=entidad1.getPriority();
int priority2=entidad2.getPriority();
int priority3=entidad3.getPriority();
listItems.clear();
if(随机<优先级1){
listItems.add(entidad1);
}else if(随机<优先级2){
listItems.add(entidad2);

}否则,如果(随机您试图按优先级区分您的项目,但您
package com.test.platos_4;

import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.RatingBar;
import android.widget.TextView;

import java.util.List;

public class Adaptador2  extends RecyclerView.Adapter<Adaptador2.ViewHolder>
{
private List<Entidad2> listItems;
private OnRecipeListener mOnRecipeListener;

public  Adaptador2(List<Entidad2> listItems, OnRecipeListener onRecipeListener) {
    this.listItems = listItems;
    this.mOnRecipeListener = onRecipeListener;
}


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

@Override
public void onBindViewHolder(ViewHolder viewholder, int position) {
    Entidad2 entidad = listItems.get(position);
    int resource = entidad.getImgFoto();
    String title = entidad.getTitulo();
    String time = entidad.getTiempo();
    int barra = entidad.getRating();
    final int priority = entidad.getPriority();
    //int fondo = listItems.get(position).getColorfondo();
    viewholder.setData(resource, title, time, barra);

//You can pass the clicked item's priority back to your activity like this
    viewholder.itemView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
    mOnRecipeListener.OnRecipe(priority);
        }
    });
    // por si necesito color de fondo viewholder.setData(resource, title, time, barra, fondo);
}

@Override
public int getItemCount() {
    return listItems.size();
}
class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {

    private ImageView imgFoto;
    private TextView titulo;
    private TextView tiempo;
    private RatingBar ratingBar;
    //private ImageView colorfondo;
    OnRecipeListener onRecipeListener;

    public ViewHolder(View itemView, OnRecipeListener onRecipeListener) {
        super(itemView);

        imgFoto = itemView.findViewById(R.id.imgFoto);
        titulo = itemView.findViewById(R.id.tvTitulo);
        tiempo = itemView.findViewById(R.id.tvTiempo);
        ratingBar = itemView.findViewById(R.id.ratingBarVerd);
        //colorfondo = itemView.findViewById(R.id.colorfondo);

        //This is useless
        //this.onRecipeListener = onRecipeListener;

    }

    //por si necesito color de fondo private void setData(int resource, String title, String time, int barra, int fondo){
    private void setData(int resource, String title, String time, int barra){
        imgFoto.setImageResource(resource);
        titulo.setText(title);
        tiempo.setText(time);
        ratingBar.setRating(barra);
        //colorfondo.setImageResource(fondo);

    }

    @Override
    public void onClick(View v) {

    }
}

public interface OnRecipeListener{
    void OnRecipe(int priority);
}
}