2016-06-29 2 views
1

Когда я добавляю новые данные в свой RecycleView, если я нахожусь в верхней части представления, я получаю прокрутку вниз немного. Как правильно прокручивать верхнюю часть RecycleView? Я пробовал:Как перейти к началу RecycleView?

boolean isAtTop = !mRecyclerView.canScrollVertically(-1); 
mRecyclerAdapter.updateMessageItemDataList(mMessageItems); 
if (isAtTop) 
    mRecyclerView.scrollToPosition(0); 

Но это ничего не делает (я все еще немного прокручиваюсь). Я искал на переполнение стека и обнаружил следующее, что до сих пор не делает anythnig:

boolean isAtTop = !mRecyclerView.canScrollVertically(-1); 
mRecyclerAdapter.updateMessageItemDataList(mMessageItems); 
if (isAtTop) 
    ((LinearLayoutManager)mRecyclerView.getLayoutManager()).scrollToPositionWithOffset(0, 0); 

isAtTop всегда быть определены правильно, но мои попытки прокрутки назад к вершине никогда не работать. Кто-нибудь сталкивался с подобной проблемой.

Это действительно странно, потому что я могу перейти к нижней точки зрения, правильно используя

mRecyclerView.scrollToPosition(mRecyclerAdapter.getItemCount() - 1); 
+0

Может быть причиной для этого нужно быть 'если (! isAtTop)' – Vucko

+0

Нет, я только хочу, чтобы перейти к й e top, если он уже был наверху, прежде чем добавлять новые данные. – CaptainForge

+0

А, ладно, я тогда неправильно понял. Вы попробовали [этот вопрос] (http://stackoverflow.com/questions/32159724/scroll-to-top-in-recyclerview-with-lingleayoutmanager)? – Vucko

ответ

0

Может быть, это будет полезно (это работает в моем случае):

final LinearLayoutManager mLinearLayoutManager = new LinearLayoutManager(this); 
mLinearLayoutManager.setOrientation(LinearLayoutManager.VERTICAL); 
myRecycler.setLayoutManager(mLinearLayoutManager); 
myRecycler.setHasFixedSize(true); 

... 
anyButton.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     if (mLinearLayoutManager != null) { 
      myRecycler.scrollToPositionWithOffset(0, 0); 
     } 
    } 
}); 
0

работает в моем случае #salamtempe

ActionButon.setOnClickListener(new View.OnClickListener() { 
    public void onClick(View v) { 
     if (new LinearLayoutManager(getActivity()) != null) { 
      mRecyclerView.smoothScrollToPosition(0); 
     } 
    } 
}); 
Смежные вопросы