Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

ListView: Prevent a view from recycling

I have a ListView wich use recycled views. I'm trying to prevent a view from recycle. So I use setHasTransientState:

android.support.v4.view.ViewCompatJB.setHasTransientState(View view, boolean hasTransientState)

It works very well on Jellybean version but it doesn't do anything on Api < 16. Is there a way to make it work or there is different approach for pre Jellybean ?


I found out how to set a RecyclerListener like @Daniel Chow suggested.

listView.setRecyclerListener(new RecyclerListener() {
        @Override
        public void onMovedToScrapHeap(View view) {
            // Stop animation on this view
        }
});
like image 459
vovahost Avatar asked May 25 '13 16:05

vovahost


1 Answers

For pre Jellybean, I think you can just use setRecyclerListener on ListView and when RecyclerListener#onMovedToScrapHeap(View view) is called, clear the animation on the view who has been recycled and directly do the final job which was supposed to be done when animation ends.

The code inside onMovedToScrapHeap(View view) depends on how you implement the animation, e.g. you can call View#clearAnimation() if you previously used View#startAnimation to start animation.

like image 188
Daniel Chow Avatar answered Sep 30 '22 11:09

Daniel Chow