Android - ListView填充两次

时间:2011-06-13 13:38:42

标签: android listview

我使用以下代码填充ListView -

setListAdapter(new NotifListAdapter(this));

我在我的活动的onCreate()方法中调用它,并且在第一次创建时,它填充正常。但是当我返回并返回此活动时,它会在List中显示两倍的行数!我检查了我的数据库,它绝对不是后端问题。此外,当我强制关闭活动并重新启动它时,它会填充正常。任何人都可以提供对这个问题的见解吗?

这是列表适配器 -

public class NotifListAdapter extends BaseAdapter {
    public NotifListAdapter(Context context) {
        mContext = context;
    }

    public int getCount() {
        return rnList.size();
    }


    public long getItemId(int position) {
        return position;
    }

    public View getView(int position, View convertView, ViewGroup parent) {
        NotifView nv;

        RichNotification rn = rnList.get(position);

        if (convertView == null) {

            nv = new NotifView(mContext, rn.getSubject(),
                    rn.getContent(), rn.getDate());
        } else {
            nv = (NotifView) convertView;
            nv.setTitle(rn.getSubject());
            nv.setDialogue(rn.getContent());
            nv.setDate(rn.getDate());
        }

        return nv;
    }

    /**
     * Remember our context so we can use it when constructing views.
     */
    private Context mContext;

    @Override
    public Object getItem(int position) {
        return null;
    }

}

1 个答案:

答案 0 :(得分:9)

您的适配器正在显示来自rnList的数据:您可能正在向rnList添加新对象而不先清除它,这就是您返回活动时获得两倍行数的原因。在将数据添加到rnList调用rnList.clear();之前,这可能会解决您的问题。