如何根据其中一个项目特征滚动到RecyclerView中的指定项目?

时间:2017-04-17 01:17:18

标签: android date search android-recyclerview recycler-adapter

我正在开发一个Feed风格的应用,用户在可滚动的RecyclerView中有很多帖子。我有另一个Activity用户访问的内容基本上是CalendarView,用户可以从中选择一个日期以导航到RecyclerView。稍后会详细介绍。

RecyclerView中的每个项目都是PostPost类看起来像这样:

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);

myRecyclerViewRecyclerViewadapterRecyclerView.AdapterlayoutManagerRecyclerView.LayoutManagerpostsList<Post>

假设在另一个日历Activity内选择的日期不一定是实际帖子的日期,但可以是任何日期。因此,如果我有2017年1月1日和2017年3月15日的帖子,我选择2017年2月1日,RecyclerView将把2017年3月15日的帖子放在顶部,因为这是第一篇帖子在那个日期之后。

this answer开始,我相信一旦我有索引,我就可以用layoutManager.scrollToPositionWithOffset(desiredIndex, 0);滚动到它,但我还没有测试过,我真的不知道怎么找desiredIndex

如果您需要任何其他信息或更多我的代码,请与我们联系。

1 个答案:

答案 0 :(得分:0)

您可能需要scrollToPosition(desiredIndex)

要查找所需的索引,请查看&#34;帖子&#34;,因为这是RecyclerView显示的数据。