我正在开发一个Feed风格的应用,用户在可滚动的RecyclerView
中有很多帖子。我有另一个Activity
用户访问的内容基本上是CalendarView
,用户可以从中选择一个日期以导航到RecyclerView
。稍后会详细介绍。
RecyclerView
中的每个项目都是Post
。 Post
类看起来像这样:
public abstract class Post implements Comparable<Post> {
public String userId;
public Date date;
public Post() {
}
protected Post(String userId, Date date) {
this.userId = userId;
this.date = date;
}
@Override
public int compareTo(@NonNull Post o) {
return date.compareTo(o.date);
}
}
请注意,所有Post
都按RecyclerView
内的日期排序。对它们进行排序,以便最新的帖子位于顶部。
在我的MainActivity
内,我有以下代码来设置RecyclerView
:
myRecyclerView = (RecyclerView) findViewById(R.id.recycler_view);
myRecyclerView.setHasFixedSize(false);
layoutManager = new LinearLayoutManager(this);
myRecyclerView.setLayoutManager(layoutManager);
adapter = new SocialJournalAdapter(posts, this);
myRecyclerView.setAdapter(adapter);
myRecyclerView
为RecyclerView
,adapter
为RecyclerView.Adapter
,layoutManager
为RecyclerView.LayoutManager
,posts
为List<Post>
。
假设在另一个日历Activity
内选择的日期不一定是实际帖子的日期,但可以是任何日期。因此,如果我有2017年1月1日和2017年3月15日的帖子,我选择2017年2月1日,RecyclerView
将把2017年3月15日的帖子放在顶部,因为这是第一篇帖子在那个日期之后。
从this answer开始,我相信一旦我有索引,我就可以用layoutManager.scrollToPositionWithOffset(desiredIndex, 0);
滚动到它,但我还没有测试过,我真的不知道怎么找desiredIndex
如果您需要任何其他信息或更多我的代码,请与我们联系。
答案 0 :(得分:0)
您可能需要scrollToPosition(desiredIndex)
要查找所需的索引,请查看&#34;帖子&#34;,因为这是RecyclerView显示的数据。