Android на клик установить просмотр изображений - PullRequest
0 голосов
/ 02 декабря 2018

, поэтому у меня есть проект Android, который использует переработчик и просмотр карты, где я устанавливаю фоновое изображение при щелчке карты.Это мой код:

public class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerViewAdapter.Viewholder> {
private ArrayList <Integer> mImages = new ArrayList<>();

public RecyclerViewAdapter( Context mContext, ArrayList<Integer> mImages) {
    this.mImages = mImages;
}

@NonNull
@Override
public Viewholder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
    View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.itemlist,viewGroup,false);

    return new Viewholder(view);
}

@Override
public void onBindViewHolder(@NonNull final Viewholder viewholder, int i) {
    viewholder.img.setImageResource(mImages.get(i));
}

@Override
public int getItemCount() {
    return mImages.size();
}

public class Viewholder extends RecyclerView.ViewHolder implements View.OnClickListener{

    ImageView img;
    ImageView imv;

    public Viewholder(@NonNull View itemView) {
        super(itemView);
        img = itemView.findViewById(R.id.imgview);
        imv = itemView.findViewById(R.id.imageView4);
        itemView.setOnClickListener(this);
    }

    @Override
    public void onClick(View view) {
        Log.d("TEST", "Clicked");
        int position = getLayoutPosition();
        imv.setImageResource(R.drawable.vehicles);

    }
}
}

Но он не работает при нажатии, и приложение просто падает.Как мне решить эту проблему?

Ответы [ 3 ]

0 голосов
/ 02 декабря 2018

попробуйте переместить onClickListener в onBindViewHolder

@Override
public void onBindViewHolder(@NonNull final Viewholder viewholder, int i) {
    viewholder.img.setImageResource(mImages.get(i));
    viewholder.img.setOnClickListener(v -> {
      // your code
    });

}
0 голосов
/ 02 декабря 2018

Пожалуйста, попробуйте

 itemView.setOnClickListener(new View.OnClickListener{
     @Override
     public void onClick(View view){
         //your code
     }
 });
0 голосов
/ 02 декабря 2018

Вы должны определить свой itemView как интерактивный для получения событий клика.

android:clickable="true"
...