Cha*_*kar 3 android android-recyclerview
我正在使用 recyclerview,我必须在 recyclerview 中选择最后一项。
我首先滚动到 recyclerview,然后对所选项目调用 performClick() 方法。
这是代码。
int latestPostIndex = reactionsListAdapter.getItemCount() - 1;
rvReactionsList.scrollToPosition(latestPostIndex);
rvReactionsList.getChildAt(latestPostIndex).performClick();
Run Code Online (Sandbox Code Playgroud)
latestPostIndex 已正确填充。问题是在滚动完成之前调用 performClick,因此应用程序崩溃。
如何让 performClick() 等到 scrollToPosition() 完成?
您可以将 a 分配RecyclerView.OnScrollListener给您RecyclerView并收听onScrollStateChanged等待滚动完成:
int latestPostIndex = reactionsListAdapter.getItemCount() - 1;
rvReactionsList.scrollToPosition(latestPostIndex);
rvReactionsList.addOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
super.onScrollStateChanged(recyclerView, newState);
if(newState == RecyclerView.SCROLL_STATE_IDLE
&& linearLayoutManager.findLastVisibleItemPosition() == latestPostIndex)
linearLayoutManager.findViewByPosition(latestPostIndex).performClick();
}
});
Run Code Online (Sandbox Code Playgroud)
PS:不要忘记替换
rvReactionsList.getChildAt(latestPostIndex)为linearLayoutManager.findViewByPosition(latestPostIndex)asgetChildAt不返回RecyclerView..
| 归档时间: |
|
| 查看次数: |
1333 次 |
| 最近记录: |