为什么cursoradapter检查mDataValid并且游标是否为空?

时间:2017-07-17 08:21:20

标签: android override android-cursoradapter

我是android新手,我正在尝试实现自定义适配器。当我看到这个时,我正在看一下Cursor Adapter源代码(以覆盖一些函数):

  public Object getItem(int position) {
    if (mDataValid && mCursor != null) {
        mCursor.moveToPosition(position);
        return mCursor;
    } else {
        return null;
    }
}

当我去检查mDataValid是什么时,我看到了:

void init(Context context, Cursor c, int flags) {
    if ((flags & FLAG_AUTO_REQUERY) == FLAG_AUTO_REQUERY) {
        flags |= FLAG_REGISTER_CONTENT_OBSERVER;
        mAutoRequery = true;
    } else {
        mAutoRequery = false;
    }
    boolean cursorPresent = c != null;
    mCursor = c;
    mDataValid = cursorPresent;
    mContext = context;
    mRowIDColumn = cursorPresent ? c.getColumnIndexOrThrow("_id") : -1;
    if ((flags & FLAG_REGISTER_CONTENT_OBSERVER) == FLAG_REGISTER_CONTENT_OBSERVER) {
        mChangeObserver = new ChangeObserver();
        mDataSetObserver = new MyDataSetObserver();
    } else {
        mChangeObserver = null;
        mDataSetObserver = null;
    }
    if (cursorPresent) {
        if (mChangeObserver != null) c.registerContentObserver(mChangeObserver);
        if (mDataSetObserver != null) c.registerDataSetObserver(mDataSetObserver);
    }
}

这不是多余的吗?覆盖getItem函数时该怎么办?

P.S。 - >我想在开头插入一个额外的自定义行(而不是从光标)

0 个答案:

没有答案