我正在使用一個Feed風格的應用程序,其中用戶在可滾動的RecyclerView
中有很多帖子。我還有另一個Activity
,用戶轉到本質上是CalendarView
,用戶可以從中選擇一個日期導航到RecyclerView
。稍後再說。如何根據其中一項特性滾動到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
S的被他們的日期排序的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
設我知道你是否需要任何其他信息或更多我的代碼。