0

我试图弄清楚 Android Adapter 如何与 AdapterView 关联。但我不明白以下代码:

@Override
public void setAdapter(ListAdapter adapter) {
    if (mAdapter != null && mDataSetObserver != null) {
        mAdapter.unregisterDataSetObserver(mDataSetObserver);
    }

    resetList();
    mRecycler.clear();        
    mAdapter = adapter;

    mOldSelectedPosition = INVALID_POSITION;
    mOldSelectedRowId = INVALID_ROW_ID;

    // AbsListView#setAdapter will update choice mode states.
    super.setAdapter(adapter);

    if (mAdapter != null) {
        mOldItemCount = mItemCount;
        mItemCount = mAdapter.getCount();
        mDataChanged = true;
        checkFocus();

        mDataSetObserver = new AdapterDataSetObserver();
        mAdapter.registerDataSetObserver(mDataSetObserver);

        mRecycler.setViewTypeCount(mAdapter.getViewTypeCount());

        int position;
        if (mStackFromBottom) {
            position = lookForSelectablePosition(mItemCount - 1, false);
        } else {
            position = lookForSelectablePosition(0, true);
        }
        setSelectedPositionInt(position);
        setNextSelectedPositionInt(position);
        checkSelectionChanged();
    } else {
        checkFocus();            
        // Nothing selected
        checkSelectionChanged();
    }

    requestLayout();
}

我不知道变量 mAdapter 是从哪里来的,我也不明白为什么这个方法中的代码不能点击关联到 Eclipse 中的关联方法,它们是在
本地方法中实现的吗?

4

1 回答 1

0

mAdapter 继承自父类:android.widget.AbsListView。它们不是本机代码,我认为这是 Eclipse 问题,无法单击转到相应的方法。

于 2016-11-03T11:26:55.447 回答