Вы должны уменьшить OnCreateViewHolder
до простого создания экземпляра, настроить это представление и вернуть ViewHolder
, а затем обработать привязку в переопределении OnBindViewHolder
, чтобы у вас был стабильный идентификатор для обработки.
Что-то вроде:
public override RecyclerView.ViewHolder OnCreateViewHolder(ViewGroup parent, int viewType)
{
var itemView = LayoutInflater.From(parent.Context).Inflate(Resource.Layout.app_info, parent, false);
return new ItemViewHolder(itemview); // "OnClick" should be added in the OnBindViewHolder and removed in the OnViewRecycled
}
Теперь в OnBindViewHolder
вам передается стабильное значение position
, на которое вы можете действовать (в вашем случае позиция нуля будет особым случаем). В этом переопределении вы будете обрабатывать присвоение значений вашему ViewHolder, добавлять прослушиватели / обработчики событий и т. Д.:
public override void OnBindViewHolder(RecyclerView.ViewHolder holder, int position)
{
var viewHolder = holder as ItemViewHolder;
if (position == 0)
{
~~~
}
else
{
~~~
}
}
В переопределении OnViewRecycled
удалите все прослушиватели / обработчики событий и т. Д., Чтобы предотвратить утечки памяти и т. Д. *
public override void OnViewRecycled(Java.Lang.Object holder)
{
var viewHolder = holder as ItemViewHolder;
~~~
base.OnViewRecycled(holder);
}