添加4个以上的列表项会覆盖旧的列表项

时间:2015-02-06 13:51:16

标签: android android-listview android-arrayadapter

我正在创建一个可以创建多个厨房计时器的应用程序。我可以添加一个新的计时器,它将出现在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;
}

0 个答案:

没有答案