Java 带有ImageView和不同活动的RecyclerView
我拥有的:一个回收站,里面有酒吧、咖啡店等地方的照片 我想要的是:当你点击其中一张图片时,我会向你显示所选地点的信息 我的问题:例如,如何为第三张图片设置Java 带有ImageView和不同活动的RecyclerView,java,android,xml,android-studio,android-recyclerview,Java,Android,Xml,Android Studio,Android Recyclerview,我拥有的:一个回收站,里面有酒吧、咖啡店等地方的照片 我想要的是:当你点击其中一张图片时,我会向你显示所选地点的信息 我的问题:例如,如何为第三张图片设置OnCLickListener 很多人告诉我用我的“onBindViewHolder()”方法来实现它,但它不允许我实现“startActivity”,所以我可以转到“意图””请,如果你能用代码解释一下,那就太好了,我还不擅长编程,所以我非常感谢 我的适配器 public class AdapterDatos extends RecyclerV
OnCLickListener
很多人告诉我用我的“onBindViewHolder()
”方法来实现它,但它不允许我实现“startActivity
”,所以我可以转到“意图”
”请,如果你能用代码解释一下,那就太好了,我还不擅长编程,所以我非常感谢
我的适配器
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);
}
}
我的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扩展活动{
ArrayList listalugares;
RecyclerView recyclerLugares;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(右布局、活动、食物和围棋);
listalugares=newarraylist();
recyclerLugares=(RecyclerView)findViewById(R.id.RecyclerID);
recyclerLugares.setLayoutManager(新的LinearLayoutManager(本));
llenarNombres();
AdapterDatos adapter=新AdapterDatos(listalugares);
setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
Toast.makeText(getApplicationContext(),“Seleccion”+listalugares.get(recyclerLugares.getChildAdapterPosition(v)).getLugares(),Toast.LENGTH_SHORT.show();
Intent myIntent=新的Intent(foodAndGo.this、MapsActivity.class);
星触觉(myIntent);
}
});
回收器集控器适配器(适配器);
}
私有无效llenarNombres(){
添加(新ClaseNueva(“Restaurants”,R.drawable.carnemejor));
添加(新ClaseNueva(“Bares”,R.drawable.beers));
添加(新的ClaseNueva(“Cafeterías”,R.drawable.Desayunosmeyjor));
添加(新的ClaseNueva(“比萨店”,R.drawable.pizzaamejor));
添加(新的ClaseNueva(“Favoritos”,R.drawable.favoritosmejo));
}
}内部
食物和围棋
活动变化
AdapterDatos adapter=新的AdapterDatos(listalugares)
toadapterdataos adapter=newadapterdataos(listalugares,foodAndGo.this)代码>
在适配器类中添加以下内容
private Context context;
public AdapterDatos(ArrayList<ClaseNueva> listaLugares,Context context) {
this.context=context;
listalugares = listaLugares;
}
天啊!!!它真的起作用了!!!非常感谢你,我是这个网站的新手,告诉我我能做些什么来奖励你,我真的很感谢你花时间回答我的问题。再次感谢您,我将等待您关于如何在网站上奖励您的回答:)
private Context context;
public AdapterDatos(ArrayList<ClaseNueva> listaLugares,Context context) {
this.context=context;
listalugares = listaLugares;
}
Intent myIntent = new Intent(context, MapsActivity.class);
context.startActivity(myIntent);