活动开始使用Linearlayoutmanager时,将Recycleview滚动到顶部位置 [英] Scroll Recycleview to Top position when activity starts using Linearlayoutmanager

查看:85
本文介绍了活动开始使用Linearlayoutmanager时,将Recycleview滚动到顶部位置的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在将 Firebase RealTime数据库检索到我的 Recycleview适配器类.我想按日期对数据进行排序,并使用最新的帖子.我正在使用

I"m retrieving Firebase RealTime Database to my Recycleview Adapter Class. I want to sort the data by date with latest post at top. I'm using

llm.setReverseLayout(true);

可以正常工作,但是现在当活动打开时,recycleview会自动滚动到底部.但是我希望它可以将其强制到顶部.

which works but now when activity opens then recycleview automatically scrolls to bottom itself. But I want it to force it to Top.

这是我的代码

         rv.setHasFixedSize(true);
         LinearLayoutManager llm = new LinearLayoutManager(this);
         llm.setReverseLayout(true);
         rv.setLayoutManager(llm);
         llm.scrollToPositionWithOffset(0, 0);
         rv.setAdapter(staggeredBooksAdapter);

我的整个代码是

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


   
}

我用过

/Solution one
mLayoutManager.scrollToPositionWithOffset(0, 0);
//Solution Two
rv.scrollToPosition(0)
//Solution Three
setStackFromEnd(false)
//Solution Four
Collections.reverse();

但是他们没有用.

有解决方案吗?预先感谢.

Any Solution? Thanks in advance.

推荐答案

不用设置任何东西,现在将false传递给llm.setReverseLayout(false);

Don't use set anything out of the box now pass false to llm.setReverseLayout(false);

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

When you get the data from firebase just use Collections.reverse(passyourlist); the list would be reversed inplace. After that pass it to your adapter and it would work fine.

这篇关于活动开始使用Linearlayoutmanager时,将Recycleview滚动到顶部位置的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆