Проблема с RecyclerView, перемещается в последнюю позицию - PullRequest
0 голосов
/ 08 июня 2019

Я - специалист по утилизации с пользовательским адаптером.На данный момент у меня семь предметов.В первый раз, когда открывается действие, мой recyclerView показывает меня в первом элементе, но если я ухожу и возвращаюсь, он позиционируется в последнем элементе.Кажется, что делает автопрокрутку.

Странная вещь (я не знаю, нужно ли это делать), что я помещаю строку в журнал, в метод GetItemViewType и при первом открытии я получаюэто:

 D/POSITION(30978): 0
 E/POSITION(30978): 0
 D/POSITION(30978): 1
 E/POSITION(30978): 1
 D/POSITION(30978): 0
 E/POSITION(30978): 0
 D/POSITION(30978): 1
 E/POSITION(30978): 1
 D/POSITION(30978): 0
 E/POSITION(30978): 0
 D/POSITION(30978): 1
 E/POSITION(30978): 1

И когда я выхожу и возвращаюсь, я получаю это:

 D/POSITION(30978) : 0
 E/POSITION(30978) : 0
 D/POSITION(30978) : 1
 E/POSITION(30978) : 1
 D/POSITION(30978) : 1
 E/POSITION(30978) : 1
 D/POSITION(30978) : 4
 E/POSITION(30978) : 4
 D/POSITION(30978) : 4
 E/POSITION(30978) : 4
 D/POSITION(30978) : 5
 E/POSITION(30978) : 5
 D/POSITION(30978) : 6
 E/POSITION(30978) : 6
 D/POSITION(30978) : 7
 E/POSITION(30978) : 7
 D/POSITION(30978) : 3
 E/POSITION(30978) : 3
 D/POSITION(30978) : 3
 E/POSITION(30978) : 3
 D/POSITION(30978) : 4
 E/POSITION(30978) : 4
 D/POSITION(30978) : 5
 E/POSITION(30978) : 5
 D/POSITION(30978) : 6
 E/POSITION(30978) : 6
 D/POSITION(30978) : 7
 E/POSITION(30978) : 7

Мой макет:

<MvxRecyclerView
     android:clipToPadding="false"
     android:id="@+id/myRecyclerView"
     android:focusable="false"
     android:layout_height="match_parent"
     android:layout_width="match_parent"
     android:scrollbars="vertical" />

Моя деятельность:

protected override void OnViewModelSet()
{
     SetContentView(Resource.Layout.myActivity);
     _recyclerViewAdapter = new ClassRecyclerViewAdapter((IMvxAndroidBindingContext)BindingContext);
     _recyclerView = FindViewById<MvxRecyclerView>(Resource.Id.myRecyclerView);
     _recyclerView.HasFixedSize = true;
     _recyclerView.Adapter = _recyclerViewAdapter;
     _recyclerView.ViewTreeObserver.AddOnScrollChangedListener(this);
}

И мой адаптер:

public class ClassRecyclerViewAdapter : MvxRecyclerAdapter
{
     public ClassRecyclerViewAdapter(IMvxAndroidBindingContext bindingContext)
            : base(bindingContext) => HasStableIds = true;

     public override int GetItemViewType(int position) 
     {
          Mvx.IoCProvider.Resolve<ILogger>().LogMessage("POSITION", position.ToString());
          return ViewTypeFactory.ViewType((MyItems)GetItem(position));
      }

     public override RecyclerView.ViewHolder OnCreateViewHolder(ViewGroup parent, int viewType)
      {
          var bc = new MvxAndroidBindingContext(parent.Context, BindingContext.LayoutInflaterHolder);
          return ViewHolderFactory.ViewType(viewType, parent, bc);
      }

      public override void OnBindViewHolder(RecyclerView.ViewHolder holder, int position)
      {
          base.OnBindViewHolder(holder, position);
          var holder = holder as ItemViewHolder;
          holder.Bind();
      }

      public override long GetItemId(int position)
      {
          var fi = (MyItems)GetItem(position);
          return fi.Id;
       }
}

Мне нужно, чтобы это всегда показывало меня в первом элементе.

Есть идеи?

Спасибо за ваши комментарии.

...