【问题标题】:RecyclerView keeps scrolling up whenever new item is added. How to fix this?每当添加新项目时,RecyclerView 都会不断向上滚动。如何解决这个问题?
【发布时间】:2018-09-14 05:51:04
【问题描述】:

所以,我有一个 recyclerview,它显示从我的 Firebase 数据库中获取的列表。但是,每次添加新项目时,recyclerview 都会无缘无故地向上滚动。我该如何解决?我已经浏览了stackoverflow上的所有解决方案并尝试实现它们但徒劳无功。

我已禁用动画,但仍然存在。

我的代码:

 @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_artcall_feed);
        setupBottomNavigationView();

        Artcall_feed_list = (RecyclerView)findViewById(R.id.artcall_feed);

        mFeedRef = FirebaseDatabase.getInstance().getReference().child("Artcall_Feed").child("general");
        mtoolbar = findViewById(R.id.genpage_toolbar);
        setSupportActionBar(mtoolbar);


        Artcall_feed_list.setLayoutManager(new LinearLayoutManager(this));

        Artcall_feed_list.getItemAnimator().setChangeDuration(0);

        //Artcall_feed_list.setNestedScrollingEnabled(false);


        RecyclerView.ItemAnimator animator = Artcall_feed_list.getItemAnimator();

        if (animator instanceof SimpleItemAnimator) {
            ((SimpleItemAnimator) animator).setSupportsChangeAnimations(false);
        }

    }

 @Override
    protected void onStart() {
        super.onStart();

    FirebaseUser currentUser = FirebaseAuth.getInstance().getCurrentUser();

    if (currentUser == null) {
        sendtoStart();
    }
    else {

        FirebaseRecyclerAdapter<Feed_list, FundedArtcalls> firebaseRecyclerAdapter = new FirebaseRecyclerAdapter<Feed_list, FundedArtcalls>(
                Feed_list.class,
                R.layout.single_artcall_feed_layout,
                ArtcallFeedActivity.FundedArtcalls.class,
                mFeedRef

        ) {
            @Override
            protected void populateViewHolder(final FundedArtcalls viewHolder, final Feed_list model, final int position) {

                final String feed_item_id = getRef(position).getKey();

                viewHolder.setArtist_name(model.getArtist_name());
                viewHolder.setPerf_location(model.getPerf_location());
                new_percent = model.getPercent_funded();
                viewHolder.setPercent_funded(new_percent, old_percent);
                viewHolder.setCurrent_like_count(model.getCurrent_like_count());
                viewHolder.setTarget_like_count(model.getTarget_like_count());
                viewHolder.setLikeStatus(feed_item_id);
                viewHolder.setImage_url(model.getImage_url());                      

              }

        };

        Artcall_feed_list.setAdapter(firebaseRecyclerAdapter);
        RecyclerView.ItemAnimator animator = Artcall_feed_list.getItemAnimator();

        if (animator instanceof SimpleItemAnimator) {
            ((SimpleItemAnimator) animator).setSupportsChangeAnimations(false);
        }

    }

}

【问题讨论】:

  • 但这不就相当于禁用动画。那你能给我正确的解决方案吗?
  • 新项目在哪里添加?
  • 我正在使用 FirebaseUI。它是一个负责所有项目添加和删除的库。

标签: android android-recyclerview firebaseui


【解决方案1】:

去掉这一行“Artcall_feed_list.getItemAnimator().SetChangeDuration(0);”

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多