Android — измените адаптер и элементы recyclerview в прослушивателе щелчков мыши

#android #android-recyclerview

#Android #android-recyclerview

Вопрос:

Моя ситуация такова: я устанавливаю RecyclerView во время выполнения в асинхронном запросе модифицированного метода, вызываемом в цикле. Таким образом, один за другим элементы добавляются в recyclerview.

      @Override
        public void onResponse(Call<DirectionResults> call, Response<DirectionResults> response) {
            Legs legs = response.body().getRoutes().get(0).getLegses().get(0);
            NearbyBusStation current = new NearbyBusStation(currentItem, legs.getDistance().getValue(), legs.getDuration().getText());

            int i;
            for(i = 0; i < nearbyBusStations.size();i  ){
                if (current.getDistance() < nearbyBusStations.get(i).getDistance())
                    break;
            }
            nearbyBusStations.add(i,current);
            mAdapter.notifyItemInserted(nearbyBusStations.size() - 1);

        }
  

В адаптере:

    @Override
public void onBindViewHolder(ViewHolder holder, int position) {
    // - get element from your dataset at this position
    // - replace the contents of the view with that element
    final NearbyBusStation currentItem = mDataset.get(position);
    holder.name.setText(currentItem.getName().getName());
    holder.distance.setText(currentItem.getDistance()  " m");
    holder.time.setText(currentItem.getTime()   " a piedi");
    holder.itemView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
         //I suppose that code go here
         }
  

Я хочу, чтобы при нажатии на элемент recyclerview он расширялся, добавляя новый элемент ниже, или чтобы recyclerview был очищен и добавлен новый элемент, с кнопкой для возврата к исходному recyclerview.
(при нажатии на автобусную остановку он откроет следующие автобусы, которые проходят от него)
Я пытался использовать внешние библиотеки для создания расширяемого recyclerview, но они очень хорошо работают с фиксированным элементом, в моем случае элементы добавляются путем доработки во время выполнения.
Если правильно использовать onclick внутри onBindViewHolder, как? с другим адаптером?
Мне нужно вставлять элементы один за другим, потому что я использовал эту библиотеку для анимации

   compile 'jp.wasabeef:recyclerview-animators:2.2.4'
  

которые работают только для вставки или удаления элементов один за другим, но если это проблема, я могу без проблем изменить библиотеку для анимации.

Заранее благодарю вас!

Комментарии:

1. Чтобы ответить на один вопрос, не размещайте своего onClick слушателя внутри onBindViewHolder . Каждый раз, когда представление перерабатывается, добавляется прослушиватель кликов. Поместите прослушиватель щелчков мыши в конструктор вашего ViewHolder и используйте getAdapterPosition() для ссылки на местоположение в любом массиве или списке, который вы используете для RecyclerView.

2. @mwieczorek Я добавляю final NearbyBusStation CurrentItem = mDataset.get(getAdapterPosition()); но с ArrayIndexOutOfBoundsException