#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