我正在创建一个可以创建多个厨房计时器的应用程序。我可以添加一个新的计时器,它将出现在ListView中。当我创建4个定时器没有问题时,它们都会出现并起作用。当我添加第5个计时器时,它会创建一个新的列表项但更新第4个项目的内容,而不是第5个项目的内容。当我创建第6个项目时,它会在列表视图中创建一个新项目,它会更新第6个项目的内容,但是当我向上滚动时,它也会将第一个项目的内容更改为第6个项目的内容。
以下是我的ArrayAdapter的getView代码:
public View getView(final int position, View convertView, ViewGroup parent) {
mKitchenTimer = null;
View view;
KitchenTimerViewHolder holder;
if(convertView == null) {
view = mInflater.inflate(R.layout.listitem_kitchentimer, parent, false);
holder = new KitchenTimerViewHolder();
holder.kitchenTimerDuration = (TextView) view.findViewById(R.id.kitchen_timer_duration);
holder.kitchenTimerTitle = (TextView) view.findViewById(R.id.kitchen_timer_title);
holder.pauseKitchenTimer = (Button) view.findViewById(R.id.pause_kitchen_timer);
view.setTag(holder);
} else {
view = convertView;
holder = (KitchenTimerViewHolder)view.getTag();
}
mKitchenTimer = KitchenTimerList.get(position);
if(!mKitchenTimer.isRunning() && !mKitchenTimer.isEnded()) {
holder.kitchenTimerTitle.setText(mKitchenTimer.getName());
mKitchenTimer.position = position;
mKitchenTimer.setViewHolder(holder);
mKitchenTimer.run();
KitchenTimerObserver kitchenTimerObserver = new KitchenTimerObserver(mKitchenTimer);
mKitchenTimer.addObserver(kitchenTimerObserver);
}
holder.pauseKitchenTimer.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mKitchenTimer.togglePause();
}
});
return view;
}