Как настроить OnClick для примера просмотра карты Android с gridlayout - PullRequest
0 голосов
/ 11 декабря 2018

У меня есть проект Android для создания элементов макета сетки, по которым можно нажимать.Я запутался в том, где установить прослушиватель по щелчку и как выглядит код.Вот моя программа с кодом адаптера:

public class MyAdapter extends RecyclerView.Adapter <FruitViewHolder> {

    private Context mContext;
    private List< FruitsData > mFruitList;

    MyAdapter(Context mContext, List< FruitsData > mFruitList) {
        this.mContext = mContext;
        this.mFruitList = mFruitList;
    }

    @Override
    public FruitViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View mView = LayoutInflater.from(parent.getContext()).inflate(R.layout.recyclerview_item_row, parent, false);
        return new FruitViewHolder(mView);

    }

    @Override
    public void onBindViewHolder(final FruitViewHolder holder, int position) {
        holder.mImage.setImageResource(mFruitList.get(position).getFruitImage());
        holder.mTitle.setText(mFruitList.get(position).getFruitName());


    }

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

class FruitViewHolder extends RecyclerView.ViewHolder {

    ImageView mImage;
    TextView mTitle;

    FruitViewHolder(View itemView) {
        super(itemView);

        mImage = itemView.findViewById(R.id.ivImage);
        mTitle = itemView.findViewById(R.id.tvTitle);


    }
}

Спасибо за ваше внимание ..

1 Ответ

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

В основном вам нужно выполнить следующие шаги:

  1. Определить интерфейс ClickListener

    public interface OnItemClickListener {
      void onItemClick(FruitsData item);
    }
    
  2. Передать ваш ClickListener конструкторуваш адаптер

    MyAdapter(Context mContext, List<FruitsData > mFruitList, OnItemClickListener listener) {
        this.mContext = mContext;
        this.mFruitList = mFruitList;
        this.listener = listener;
     }
    
  3. Затем создайте установщик для слушателя

    public void setListener(OnItemClickListener listener) {
      this.listener=listener;
    }
    
    //and ease your constructor
    
  4. Установите onClickListener для вашего viewHolder и вызовите слушателя

    @Override
    public void onBindViewHolder(final FruitViewHolder holder, int position) {
        final FruitsData item = mFruitList.get(position);
        holder.mImage.setImageResource(item .getFruitImage());
        holder.mTitle.setText(item getFruitName());
        holder.setOnClickListener(new View.OnClickListener() {
            @Override public void onClick(View v) {
                listener.onItemClick(item);
            }
        });
    }
    
...