私はユーザーがスクロール可能なRecyclerView
の投稿をたくさん持っているフィードスタイルのアプリを開発しています。私は別のActivity
を持っています。ユーザーはそれが本質的にCalendarView
で、ユーザーはRecyclerView
にナビゲートするための日付を選択できます。これについては後で詳しく説明します。アイテム特性の1つに基づいてRecyclerView内の指定されたアイテムにスクロールするにはどうすればよいですか?
RecyclerView
の各項目は、Post
です。 Post
クラスには、次のようになります。Post
Sの全てがRecyclerView
の内側にそれぞれの日付によって並べ替えられてい
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);
}
}
注意。最新の投稿が一番上に並ぶようにソートされます。 myRecyclerView
が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);
は、adapter
はlayoutManager
がRecyclerView.LayoutManager
で、RecyclerView.Adapter
あり、そしてposts
がList<Post>
です:私のMainActivity
の内部
、私はRecyclerView
を設定するには、次のコードを持っています。
他のカレンダーActivity
の中で選択された日付は、必ずしも実際の投稿の日付ではなく、任意の日付である可能性があるとします。したがって、2017年1月1日と2017年3月15日の投稿があり、2017年2月1日を選択すると、RecyclerView
は、その日の後の最初の投稿であるため、2017年3月15日の投稿を先頭に置きます。 this answerから
は、私は、インデックスを持っていたら、私はlayoutManager.scrollToPositionWithOffset(desiredIndex, 0);
でそれにスクロールできると信じているが、私はこれをテストしていない、と私は本当にdesiredIndex
レッツを見つける方法がわかりませんあなたが他の情報や私のコードを必要とするかどうかは私には分かります。