我必须经常更新图像列表(3秒),但更新后 - 滚动将顶部。
我认为当你更新你的形象有可能你只是想保持你的RecyclerView
滚动以结束,那么你可以简单地这样的代码:
adapter = new ImageAdapter(imageAlbum);
recyclerView.SetAdapter(adapter);
recyclerView.ScrollToPosition(adapter.ItemCount - 1);
如果要滚动到更新图片时的具体位置,目前没有现在的Api,不像标准Android API,ScrollToPositionWithOffset
是Xamarin.Android中的虚拟方法,我们只能使用RecyclerView.ScrollToPosition
或LinearLayoutManager.ScrollToPosition
滚动到适配器中的特定项目。也有是获得在Xamarin.Android第一个可见项目不存在API,我们需要建立我们LinearLayoutManager
从LinearLayoutManager
类继承并重写这些方法,我们可能需要使用,例如:
public class MyLinearLayoutManager : LinearLayoutManager
{
public MyLinearLayoutManager(Context context) : base(context)
{
}
public override int FindFirstVisibleItemPosition()
{
return base.FindFirstVisibleItemPosition();
}
public override void ScrollToPositionWithOffset(int position, int offset)
{
base.ScrollToPositionWithOffset(position, offset);
}
}
现在我们可以滚动到像标准Android的具体位置:
scrollListener = new MyOnScrollListener();
...
var item = rvManager.FindFirstVisibleItemPosition();
adapter = new ImageAdapter(imageAlbum);
rv.SetAdapter(adapter);
//offset value 200 is fake, you can calculate by yourself
rvManager.ScrollToPositionWithOffset(item, 200);
在Java中,我们有一个方法来获得当前scrollX和scrollY为'recyclerView.getScrollX()'和'recyclerView.getScrollY()'如果保存这些值,你可以使用'recyclerView.scrollTo(x,y)'滚动到旧的位置。 –
不工作:C – bigjoe1