我拥有的东西:RecyclerView
,上面有酒吧,咖啡店等地方的照片。
我想要的是:当您点击其中一张图片时,我会向您显示所选地点的信息
我的问题:如何为第三张图片设置OnCLickListener
,例如
如果你能用代码解释它会很棒,我还不是很好的编程,所以我真的很感激
我的适配器
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));
}
}
答案 0 :(得分:1)
在视图上附加点击侦听器
holder.imgView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//Do Something
}
答案 1 :(得分:0)
如果您需要仅为List中的第三个位置设置onClick
从view.setOnClickListener(this);
onCreateViewHolder
@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
return new ViewHolder(view);
}
使用if Statement
在OnBindViewHolder
内仅为第三个位置设置OnClick
@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
if(holder.getAdapterPosition() == 3)
holder.itemView.setOnClickListener(this); // Parent ID
}
答案 2 :(得分:0)
在您的适配器 onBindViewHolder 中尝试以下代码:
holder.Foto.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View view)
{
if(position==0){
Intent intent = new Intent(context,MapsActivity.class) // You can get context from onCreateViewHolder, initialize one from parent.getContext() or pass one in constructor of adapter
startActivity(intent)
}else if(position==1){
// open Second Activity
}else{
// open Third Activity
}
});
答案 3 :(得分:0)
03