我的RelativeLayout
上面有ListView
,我希望该布局上的TextView
根据{{1}的第一个可见项的内容进行更改}。所以我在我的列表中使用ListView
:
onScrollListener
当我使用它时,列表滚动速度非常慢,这真的很奇怪,但是当我尝试对@Override
public void onScroll(AbsListView view, int firstVisibleItem,
int visibleItemCount, int totalItemCount) {
if (adapter != null && adapter.getCount() > 0) {
Transaction data = (Transaction) adapter.getItem(firstVisbileItem);
Date date = data.getTransactionDate();
date.setActualDate(date.getActualDate());
String month = date.getMonthString(context);
String year = date.getYear() + "";
tvLeftValue.setText(month);
tvRightValue.setText(year);
}
}
使用setText("")
时,列表正常滚动。当我在真实设备(Galaxy S3)上测试时,而不是在Genymotion的模拟器上测试时会出现此问题。为什么会发生这样一个奇怪的问题?这有什么可能的解决方案吗?如果您有任何人遇到过这种情况,请提前帮助我并提前致谢。
编辑: 实际上这也发生在Genymotion的模拟器中,它比实际设备中更快,所以我认为它没有发生。
答案 0 :(得分:0)
非常频繁地调用onScorll方法。你在主线程上做了太多的事情。尝试使用工作线程来完成计算工作,使用Handler来更新UI。
答案 1 :(得分:0)
这最终解决了我遇到的类似问题Simple TextView.setText causes 40% CPU Usage
基本上,接受的答案是建议设置文本强制刷新整个布局,因为TextView可能已经改变了大小。
解决方案是修复textView的大小。您仍然可以使用宽度作为匹配父级,具体取决于您的布局。
<TextView
android:layout_width="200dp"
android:layout_height="32dp"
android:ellipsize="end" />