首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >当活动开始使用Linearlayoutmanager时,滚动Recycleview到顶部位置

当活动开始使用Linearlayoutmanager时,滚动Recycleview到顶部位置
EN

Stack Overflow用户
提问于 2019-01-12 13:06:52
回答 1查看 162关注 0票数 0

我正在检索Firebase RealTime数据库到我的Recycleview适配器类。我想按日期对数据进行排序,顶部是最新的帖子。

代码语言:javascript
运行
复制
llm.setReverseLayout(true);

这是可行的,但是现在当活动打开时,recycleview会自动滚动到底部。但我希望它能迫使它达到顶峰。

这是我的密码

代码语言:javascript
运行
复制
         rv.setHasFixedSize(true);
         LinearLayoutManager llm = new LinearLayoutManager(this);
         llm.setReverseLayout(true);
         rv.setLayoutManager(llm);
         llm.scrollToPositionWithOffset(0, 0);
         rv.setAdapter(staggeredBooksAdapter);

我的全部代码是

代码语言:javascript
运行
复制
public class SubjectBooks extends AppCompatActivity {
    FirebaseAuth fauth;
    String user;
    DatabaseReference dbreference,dbref;
    RecyclerView rv;
    String subject;
    int child_count=0;
    ArrayList<Books> list;
    SubjectBooksAdapter staggeredBooksAdapter;
    ProgressDialog progressDialog;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_subject_books);
        getSupportActionBar().setTitle(getIntent().getStringExtra("subject")+" Area");
        getSupportActionBar().setBackgroundDrawable(
                new ColorDrawable(Color.parseColor("#8abe50")));
     // this.getSupportActionBar().setDisplayHomeAsUpEnabled(true);
     // this.getSupportActionBar().setHomeAsUpIndicator(R.drawable.ic_menu_share);



        fauth = FirebaseAuth.getInstance();
        subject = getIntent().getStringExtra("subject").trim();

        dbreference = FirebaseDatabase.getInstance().getReference("books").child(subject);
        dbreference.keepSynced(true);
        user = fauth.getCurrentUser().getEmail();

        list = new ArrayList<>();
        staggeredBooksAdapter = new SubjectBooksAdapter(list);

        rv = (RecyclerView) findViewById(R.id.recyclerView);

        final ProgressDialog  progressDialog = ProgressDialog.show(this, "Loading...", "Please wait...", true);
        progressDialog.setMessage("Please wait ...");
        progressDialog.setCanceledOnTouchOutside(true);
        progressDialog.show();

        rv.setHasFixedSize(true);
        LinearLayoutManager llm = new LinearLayoutManager(this);
        rv.setLayoutManager(llm);
        rv.setAdapter(staggeredBooksAdapter);

        dbreference.addChildEventListener(new ChildEventListener() {
            @Override
            public void onChildAdded(DataSnapshot dataSnapshot, String s) {

                final Books b1 = dataSnapshot.getValue(Books.class);
              //  Log.e("Value is ",dataSnapshot.getKey()+" "+b1.getBauthor());
                //Log.e("Book"," received");
                if(!user.equals(b1.getSelleremail()) || (user.equals(b1.getSelleremail())) ) {

                    child_count++;
                    list.add(b1);
                    staggeredBooksAdapter.notifyDataSetChanged();
                    progressDialog.dismiss();
                }


   
}

我用过

代码语言:javascript
运行
复制
/Solution one
mLayoutManager.scrollToPositionWithOffset(0, 0);
//Solution Two
rv.scrollToPosition(0)
//Solution Three
setStackFromEnd(false)
//Solution Four
Collections.reverse();

但他们没起作用。

有解决办法吗?提前谢谢。

EN

回答 1

Stack Overflow用户

发布于 2019-01-12 21:38:10

不要使用“设置任何东西”,现在将错误传递给llm.setReverseLayout(false);

当您从壁炉中获取数据时,只需使用Collections.reverse(passyourlist);,列表就会反转。在此之后,将它传递给您的适配器,它就可以正常工作了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54159877

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档