Comment obtenir de l'enfant en vue de RecyclerView?

Je suis en train d'essayer d'obtenir une pension de vue en position. J'ai pu obtenir la vue lorsqu'un élément est cliqué:

rvSellRecords.addOnItemTouchListener(new RecyclerItemClickListener(getActivity(), new RecyclerItemClickListener.OnItemClickListener() {
        @Override
        public void onItemClick(View view, int position) {
            ((MainActivity) getActivity()).showSellRecordFragment(position, view);
        }
    }));

Maintenant je ne peux pas avoir d'enfant, en l'absence de sur - disons, par position, par exemple:

rvSellRecords.someMagicalMethodWhichReturnsViewByPosition(5);

Question: Comment obtenir de l'enfant en vue de RecyclerView?

MODIFIER POUR BOUNTY:

Comment obtenir de l'enfant en vue de RecyclerView?

J'ai RecyclerView pour afficher les produits de la liste. Quand je clique dessus, je suis en ajoutant de nouvelles Fragment où je montre des informations sur les produits. Lors de l'ouverture, je suis la mise à jour de la barre d'outils avec vue de RecyclerView - cela fonctionne parfaitement:

    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);
}
}

Mon problème: quand j'ai la mise à jour de la vue dans la barre d'outils, je suis ancien point de vue. Lorsque la quantité est de 3, je me suis vue avec les 2. Lorsque la quantité 10 - view est avec 9.

Ma question: comment s'en vue de recycler de vue à l'aide de la position de l'élément(sans clic de l'auditeur)?

Comment obtenir de l'enfant en vue de RecyclerView?

  • pourquoi vous minusing moi?
  • U voulez obtenir la vue enfant sans cliquer ??
  • oui, je souhaite obtenir l'afficher sans cliquer à l'aide de la position
  • Ainsi, le recyclerview et de votre produit d'information sont dans 2 différents fragments oui? Vous attendez les recyclerview position de mise à jour quand ils ne sont même pas au premier plan? aussi, vous sont en train de changer adaptateur élément de données les données à la position event.getSellRecordPosition() , mais vous ne notifiant pas la carte son dataset changé, soit par adapter.notifyDataSetChanged() ou l'autre notifyItemChanged(position) méthodes
  • Possible de répéter cette question: stackoverflow.com/questions/33784369/...
InformationsquelleAutor Joe Richard | 2016-02-16