回收视图,同时对其进行定期处理程序作业

时间:2015-03-19 04:35:56

标签: android android-listview android-handler recycle

我希望Views ListView中的信件逐渐消失。我在View类中创建了一个这样的方法,使用Handler将每个字母的alpha更改为0:

public void clearLetter(final int textPosition, final BaseFragmentAdapter adapter) {
    Handler handler = new Handler();
    handler.postDelayed(new Runnable() {
        @Override
        public void run() {
            ...
            text.setSpan(new ForegroundColorSpan(Color.alpha(0)), 0, textPosition, Spannable.SPAN_INCLUSIVE_INCLUSIVE);
            adapter.notifyDataSetChanged();
            if (hasMoreLetters) {
                clearLetter(textPosition + 1, adapter);
            }
        }
    }, 300);
}

一切正常,直到我开始滚动太快:我得到IndexOutOfBoundsException。我知道视图会被回收并且文本会发生变化,因此已经启动的Handler中的作业会尝试获取前一个文本,从而提供异常。

但我不确定如何克服这个问题。我希望视图中的文本无论如何都会消失,包含文本的视图是否在可见区域内。我试图不回收视图,除了性能之外一切正常,所以它不是一个选项。

提前感谢您提供可能有用的提示。

0 个答案:

没有答案