При использовании более 9 рейтинговых баров в recyclerview, показывающих странные значения. то есть; когда я оцениваю рейтинговую марку, другая рейтинговая бара также меняет ее значение. Вот мой кодРейтинг бара в recyclerview, показывающий странные результаты по изменению рейтинга в xamarin
public class SurveyAdapter : RecyclerView.Adapter
{
const String TAG = "QUICK_ADAPTER";
public override RecyclerView.ViewHolder OnCreateViewHolder (ViewGroup parent, int viewType)
{
View v = LayoutInflater.From (parent.Context).Inflate (Resource.Layout.survey_items, parent, false);
return new ViewHolder (v);
}
public override void OnBindViewHolder (RecyclerView.ViewHolder holder, int position)
{
var vh = holder as ViewHolder;
vh.ratingBar.Rating = 0;
vh.ratingBar.RatingBarChange += (o, e) => {
Log.Error (TAG, "Rating change pos:" + position + " & value :" + (int)vh.ratingBar.Rating + "\n");
};
}
public override int ItemCount {
get { return 20; }
}
public class ViewHolder : RecyclerView.ViewHolder
{
public RatingBar ratingBar{ get; private set; }
public ViewHolder (View itemView) : base (itemView)
{
itemView.FindViewById<RatingBar> (Resource.Id.Rating);
}
}
}
Я получаю результаты, как это, когда изменение рейтинга в ratingbar.
предположит, я оценить ratingbar в положении 1
рейтинга позы: 1 & значение: 4
рейтинга позы: 8 & значение: 4
рейтинга позы: 12 & значение: 4
рейтинга позы: 14 & значение: 4
Это решение работает для 'RecyclerView'. Чтобы подробно остановиться на работе этого решения, похоже, что «RecyclerView» использует логику «position% itemViewCount» для повторной обработки позиций. В отсутствие соответствующих кодовых блоков для повторного использования рейтинговых баров имеет смысл выборочно отключить функцию рециркуляции 'RecyclerView' для этого случая. Переопределение 'getItemViewType' делает именно это, возвращая' position' вместо 'position% itemViewCount'. – rhetonik