我希望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
中的作业会尝试获取前一个文本,从而提供异常。
但我不确定如何克服这个问题。我希望视图中的文本无论如何都会消失,包含文本的视图是否在可见区域内。我试图不回收视图,除了性能之外一切正常,所以它不是一个选项。
提前感谢您提供可能有用的提示。