我正在尝试创建一个包含多个时钟的列表视图,但每行中的时间总是跳来跳去。
在我的getView中我有
Date date=new Date();
chagre.setTag(position);
Handler mClockHandler = new Handler();
mUpdateClockTask clockTask = new mUpdateClockTask(chagre,
chagre.getTag().toString(), date);
mClockHandler.post(clockTask);
并且可以运行
public class mUpdateClockTask implements Runnable {
private TextView tv;
Handler mClockHandler = new Handler();
String tag;
Date date;
public mUpdateClockTask(TextView tv,
String tag, Date date) {
this.tv = tv;
this.tag = tag;
this.date = date;
}
public void run() {
if (tv.getTag().toString().equals(tag)) {
SimpleDateFormat TIME_FORMAT = new SimpleDateFormat("h:mm:ss a");
String time = TIME_FORMAT.format(date);
tv.setText(time.trim());
mClockHandler.postDelayed(this, 1000);
notes.notifyDataSetChanged();
}
}
};
答案 0 :(得分:0)
Android不会同时在列表中创建所有行 - 它会在您滚动到它们并在之后销毁它们时创建它们,或者通常会回收列表中其他位置出现的行。您的Runnables引用了TextView
,该{{1}}用于列表中的随机行,可能会被意外销毁。