RecyclerView与ImageView和不同的活动

我有什么:一个RecyclerView与酒吧,咖啡店等地方的图片。

我想要的是:当你点击其中一张图片时,我会告诉你所选地点的信息

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

很多人告诉我在我的“ onBindViewHolder() ”方法中做到这一点,但是它不允许我实现“ startActivity ”所以我可以传递给“ Intent ”请,如果你能用代码解释它会是太棒了,我编程还不好,所以我真的很感激

我的适配器

 public class AdapterDatos extends RecyclerView.Adapter implements View.OnClickListener { ArrayList listalugares; private View.OnClickListener listener; public AdapterDatos(ArrayList 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 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活动改变,

AdapterDatos adapter = new AdapterDatos(listalugares);AdapterDatos adapter = new AdapterDatos(listalugares,foodAndGo.this);

和内部适配器类添加此

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

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

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