2016-04-11 8 views
0

Wie bekomme ich die Position der ausgewählten Bewertungsleiste in einer Liste von Bewertungsbalken innerhalb der Bewertungsleiste Hörer, die in einem Recyclerview Adapter wie unten gezeigt ist Code? Ich kann die individuellen Bewertungen jeder Bewertungsleiste erhalten, wenn der Nutzer darauf klickt, aber ich kann nicht sagen, auf welche Bewertungsleiste der Nutzer geklickt hat, da es keine Methode gibt, die Position einer bestimmten Bewertungsleiste in einer Liste zu erhalten. Ich habe die Bewertungsleiste in einem Adapter platziert, der die Liste in der Recycler-Ansicht füllt, wie im folgenden Code gezeigt. Ich benutze this Bibliothek für die Bewertungsleiste. und hier ist mein Code des Adapters, wo ich meine Zuhörer platziert haben, wie kann ich die Position des rating bar erhalten die Benutzer in meinem rating bar Hörer ausgewählt hatWie bekomme ich die Position der ausgewählten/angeklickte Bewertungsleiste in einer Liste von Bewertungsbalken?

@Override 
    public RateMa3Adapter.ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) { 
//  create a new view 
     View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.rate, viewGroup, false); 

     view.setOnClickListener(RateMa3.myOnClickListener); 
     ViewHolder viewHolder = new ViewHolder(view); 
     rootView = view; 
     ButterKnife.bind(this, view); 
     lowerRatingBar.setListener(ratingListener); 

     return viewHolder; 
    } 

    private RatingListener ratingListener = new RatingListener() { 
     @Override 
     public void onRatePicked(ProperRatingBar ratingBar) { 

      Snackbar.make(rootView, 
        String.format("Rating is %d " , ratingBar.getRating()), 
        Snackbar.LENGTH_SHORT).show(); 

      Log.e("Rate", ratingBar.getRating() + " rating"); 

// HOW CAN I GET THE POSITION OF A RATING BAR THE USER HAS CLICKED IN HERE?? THATS MY QUESTION, SINCE I HAVE A LIST OF RATING BARS 
     } 
    }; 

Antwort

2

Der einzige Code, der in der onCreateViewHolder sein sollte Methode sollte sein:

View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.rate, viewGroup, false); 
ViewHolder viewHolder = new ViewHolder(view); 
return viewHolder; 

Sie sollten die onClickListener im onBindViewHolder(ViewHolder viewHolder, int position) Verfahren eingestellt. Dort können Sie den zweiten Parameter verwenden, das ist die Position, in der RecyclerView

die onClickListener auf die gesamte Ansicht zu setzen, benutzen viewHolder.itemView.setOnClickListener()

+0

Dank! es funktionierte :) – ros