如何获得 selected/clicked 评分栏在评分栏列表中的位置

how to get positon of the selected/clicked rating bar in a list of rating bars

如何在 recyclerview 适配器中的评级栏侦听器中的评级栏列表中获取所选评级栏的位置,如下面的代码所示? 当用户单击它时,我能够获得每个评级栏的单独评级,但我无法告诉我单击了哪个评级栏的用户,因为没有获取列表中特定评级栏位置的方法。我已将评级栏放置在适配器内,该适配器会填充回收器视图中的列表,如下面的代码所示。我正在使用 this 库作为评级栏。这是我放置监听器的适配器代码,如何获取用户在我的评级栏监听器中选择的评级栏的位置

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

onCreateViewHolder 方法中的唯一代码应该是:

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

您应该在 onBindViewHolder(ViewHolder viewHolder, int position) 方法中设置 onClickListener。在那里你可以使用第二个参数,它是 RecyclerView

中的位置

要将 onClickListener 设置为整个视图,请使用 viewHolder.itemView.setOnClickListener()