我必须检查RecyclerView
是否能够layoutManager.findLastCompletelyVisibleItemPosition()
对我来说总是会返回-1
。这是我的代码。我是指它形成Check if RecyclerView is scrollable检查RecyclerView是否滚动无法正常工作
private void setAdapterData() {
mChatAdapter = new ChatAdapter(mMessagesList);
mChatMessagesRecyclerView.setAdapter(mChatAdapter);
boolean ss=isRecyclerScrollable();
Log.e("ss",ss+""+mMessagesList.size()+"ll");
}
public boolean isRecyclerScrollable() {
LinearLayoutManager layoutManager = (LinearLayoutManager) mChatMessagesRecyclerView.getLayoutManager();
if (layoutManager == null || mChatAdapter == null) return false;
Log.e("ss",layoutManager.findLastCompletelyVisibleItemPosition() +"ll");
return layoutManager.findLastCompletelyVisibleItemPosition() < mChatAdapter.getItemCount() - 1;
}
我实际的代码是
private void setAdapterData() {
mChatAdapter = new ChatAdapter(mMessagesList);
mLayoutManager = new LinearLayoutManager(getApplicationContext());
mChatMessagesRecyclerView.setAdapter(mChatAdapter);
if(isRecyclerScrollable())
mLayoutManager.setStackFromEnd(true);
mChatMessagesRecyclerView.setLayoutManager(mLayoutManager);
}
public boolean isRecyclerScrollable() {
RecyclerView.Adapter adapter = mChatMessagesRecyclerView.getAdapter();
if (mLayoutManager == null || adapter == null) return false;
return mLayoutManager.findLastCompletelyVisibleItemPosition() < adapter.getItemCount() - 1;
}
我实际上是寻找答案这个问题
set setStackFromEnd parameter to recycler view based on some condition check
我当前的工作代码
if(mMessagesList.size()>5)
setStackFromEndLayoutManager();
setAdapterData();
private void setStackFromEndLayoutManager() {
mLayoutManager = new LinearLayoutManager(getApplicationContext());
mLayoutManager.setStackFromEnd(true);
mChatMessagesRecyclerView.setLayoutManager(mLayoutManager);
}
我硬编码在这里mMessagesList.size()> 5 ...我必须使它作为dynamic..so我寻找答案检查RecyclerView是滚动??/
你在哪里设置布局管理器? –
将布局管理器设置为您的回收站视图 – Charu
在调用isScrollable方法之前设置布局管理器 – Charu