ListView:防止回收视图

vov*_*ost 5 java android android-animation android-listview android-support-library

我有一个使用回收视图的ListView.我试图阻止视图回收.所以我使用setHasTransientState:

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

它在Jellybean版本上工作得非常好,但它在Api <16上没有做任何事情.有没有办法使它工作或者有不同的方法用于预先豆豉?


我发现了如何设置像@Daniel Chow建议的RecyclerListener .

listView.setRecyclerListener(new RecyclerListener() {
        @Override
        public void onMovedToScrapHeap(View view) {
            // Stop animation on this view
        }
});
Run Code Online (Sandbox Code Playgroud)

Dan*_*how 4

对于 Jellybean 之前的版本,我认为您可以在 ListView 上使用 setRecyclerListener ,并在调用 RecyclerListener#onMovedToScrapHeap(View view) 时,清除已回收的视图上的动画,并直接执行动画结束时应该完成的最终工作。

onMovedToScrapHeap(View view) 中的代码取决于您如何实现动画,例如,如果您之前使用 View#startAnimation 来启动动画,则可以调用 View#clearAnimation()。