RecyclerView продолжает прокручиваться вверх при каждом добавлении нового элемента.Как это исправить? - PullRequest
0 голосов
/ 14 сентября 2018

Итак, у меня есть просмотрщик, который отображает список, извлеченный из моей базы данных Firebase.Но каждый раз, когда добавляется новый элемент, окно повторного просмотра прокручивается вверх без видимой причины.Как это исправить?Я рассмотрел все решения для 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);
        }

    }

}

1 Ответ

0 голосов
/ 14 сентября 2018

Удалить эту строку "Artcall_feed_list.getItemAnimator (). SetChangeDuration (0);"

...