Я пытаюсь получить детское представление по положению. Я мог получить представление, когда щелкнули один элемент:
rvSellRecords.addOnItemTouchListener(new RecyclerItemClickListener(getActivity(), new RecyclerItemClickListener.OnItemClickListener() {
@Override
public void onItemClick(View view, int position) {
((MainActivity) getActivity()).showSellRecordFragment(position, view);
}
}));
Теперь я не могу получить дочерний вид, без щелчка - допустим, например, по позиции:
rvSellRecords.someMagicalMethodWhichReturnsViewByPosition(5);
Вопрос: Как получить дочерний вид из RecyclerView?
EDIT FOR BOUNTY:
У меня есть RecyclerView
, чтобы показать список продуктов. Когда я нажимаю на нее, я добавляю новый фрагмент, где я показываю информацию о продукте. При открытии я обновляю панель инструментов с видом из RecyclerView
- это отлично работает:
rvSellRecords.addOnItemTouchListener(new RecyclerItemClickListener(getContext(), new RecyclerItemClickListener.OnItemClickListener() {
@Override
public void onItemClick(View view, int position) {
sellPresenter.onSellRecordSelected(position, view);
}
}));
When I click blue button with "+", I am incrementing quantity by 1.
public void onIncrementButtonClicked(){
sellRecord.setCount(sellRecord.getCount() + 1);
showQuantity();
bus.post(new SellRecordChangedEvent(sellRecord, sellRecordPosition));
}
Then I am posting updated sellRecord to first fragment using EventBus. There I am updating list data. I supposed that updating value(sell) automatically updates adapter. Now I am getting view from adapter using custom method(getView) which was created by me(you can find it below).
@Subscribe
public void onEvent(SellRecordChangedEvent event){
sell.getSellRecords().set(event.getSellRecordPosition(), event.getSellRecord());
sell.recalculate();
int position = event.getSellRecordPosition();
View view = adapter.getView(position);
bus.post(new TransactionTitleChangedEvent(null, view));
}
This is my adapter class - I changed adapter little bit to collect view in list and added method which returns view for respective position:
public class SellRecordsAdapter extends RecyclerView.Adapter<SellRecordsAdapter.ViewHolder> {
.....
.....
.....
List<View> viewList;
public SellRecordsAdapter(List<SellRecord> sellRecordList) {
.....
viewList = new ArrayList<>();
}
.....
.....
.....
@Override
public void onBindViewHolder(ViewHolder viewHolder, int i) {
.....
.....
.....
viewList.add(i, viewHolder.itemView);
}
public View getView(int position){
return viewList.get(position);
}
}
Моя проблема: при обновлении вида на панели инструментов я становлюсь старым. Когда количество равно 3, я получаю представление с 2. Когда количество 10 - просмотр с 9.
Мой вопрос: как получить представление из вида recycler с использованием позиции элемента (без прослушивателя кликов)?