gpt4 book ai didi

java - RecyclerView 与 ImageView 以及不同的 Activity

转载 作者:行者123 更新时间:2023-12-02 11:29:09 25 4
gpt4 key购买 nike

我有:一个 RecyclerView,其中包含酒吧、咖啡店等地方的图片。

我想要的:当您单击其中一张图像时,我会向您显示所选地点的信息

我的问题:例如,如何为第三张图片设置 OnCLickListener

很多人告诉我在“onBindViewHolder()”方法上执行此操作,但它不允许我实现“startActivity”,因此我可以传递给“Intent”请,如果你能用代码解释那就太好了,我还不太擅长编程,所以我真的很感激

我的适配器

public class AdapterDatos extends RecyclerView.Adapter<AdapterDatos.ViewHolder> implements View.OnClickListener {

ArrayList<ClaseNueva> listalugares;
private View.OnClickListener listener;

public AdapterDatos(ArrayList<ClaseNueva> listaLugares) {
listalugares = listaLugares;
}

@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {//esto es lo que hacereferencia al xml donde vamos a meter la info
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_list,null,false);//aqui le asignamos el valor del view al viewHolder
view.setOnClickListener(this);
return new ViewHolder(view);
}

@Override
public void onBindViewHolder(ViewHolder holder, int position) {// este metodo es el que se encarga de establecer la conexion entre el adaptador y la clase Viewholder ( a la cual le asignamos el xml)
holder.etiLugares.setText(listalugares.get(position).getLugares());// asi se asignan los textos
holder.Foto.setImageResource(listalugares.get(position).getFoto());//asi se asignan las fotos


}

@Override
public int getItemCount() {//este metodo va a decir el tamaño del viewHolder, en este caso de tamaño del array listalugares
return listalugares.size();//se hace asi
}

public void setOnClickListener(View.OnClickListener listener){
this.listener = listener;
}


@Override
public void onClick(View view) {


if(listener!= null){
listener.onClick(view);
}

}

public class ViewHolder extends RecyclerView.ViewHolder{

TextView etiLugares;
ImageView Foto;
Context context;

public ViewHolder(View itemView) {
super(itemView);
etiLugares = (TextView) itemView.findViewById(R.id.idNombre);//esto hace referencia a los elementos donde queremos meter la info
Foto = (ImageView) itemView.findViewById(R.id.idImagen);

}
}

}

我的Java类

 public class foodAndGo extends Activity {

ArrayList<ClaseNueva> listalugares;
RecyclerView recyclerLugares;


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

listalugares = new ArrayList<>();
recyclerLugares = (RecyclerView) findViewById(R.id.RecyclerID);
recyclerLugares.setLayoutManager(new LinearLayoutManager(this));


llenarNombres();

AdapterDatos adapter = new AdapterDatos(listalugares);
adapter.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(getApplicationContext(),"Seleccion"+listalugares.get(recyclerLugares.getChildAdapterPosition(v)).getLugares(),Toast.LENGTH_SHORT).show();
Intent myIntent = new Intent(foodAndGo.this, MapsActivity.class);
startActivity(myIntent);
}
});
recyclerLugares.setAdapter(adapter);

}



private void llenarNombres() {
listalugares.add(new ClaseNueva("Restaurantes", R.drawable.carnemejor));
listalugares.add(new ClaseNueva("Bares", R.drawable.beers));
listalugares.add(new ClaseNueva("Cafeterías",R.drawable.desayunosmejor));
listalugares.add(new ClaseNueva("Pizzerias",R.drawable.pizzaamejor));
listalugares.add(new ClaseNueva("Favoritos",R.drawable.favoritosmejo));


}

}

最佳答案

内部 foodAndGo Activity 更改,

AdapterDatos 适配器 = new AdapterDatos(listalugares);AdapterDatos 适配器 = new AdapterDatos(listalugares,foodAndGo.this);

并在适配器类内部添加此

private Context context;
public AdapterDatos(ArrayList<ClaseNueva> listaLugares,Context context) {
this.context=context;
listalugares = listaLugares;
}

现在,您可以像这样在适配器的onBindViewHolder中调用startactivity

Intent myIntent = new Intent(context, MapsActivity.class);
context.startActivity(myIntent);

关于java - RecyclerView 与 ImageView 以及不同的 Activity,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49411183/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com