2013-07-25 2 views
0

나는 다음과 같은 코드를 이해하지 못했다 AdapterView.But에 연결하는 방법 안드로이드 어댑터를 파악하려고 해요 :안드로이드 GridView의 메소드 setAdapter 작동 방법?

@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에서 연관된 메소드와 연결하기 위해 클릭 할 수없는 이유를 이해하십시오. 구현은
원시 메소드입니까?

+0

'mAdapter'는이 메소드가 속한 클래스의 멤버이거나 상속 된 보호 된 멤버입니다. – andy256

+0

안드로이드의 setAdapter() 메소드는리스트 뷰를 위해하는 것과 동일합니다. 여기서 mAdapter는 코드의 다른 위치에 정의되어 있어야합니다. 코드에서 당신이 달성하기를 원하는 것을 이해하기가 어려웠습니다. 간단한 gridView를 구현하려고합니까? – user2041902

+0

위에 게시 된 코드는 android.widget.GridView # setAdapter 메소드였습니다. Android 소스 코드에서 찾을 수 있습니다. – Thomas

답변

0

mAdapter는 상위 클래스에서 상속됩니다. android.widget.AbsListView. 그들은 원시 코드가 아니므로 해당 메소드로 이동하려면 클릭 할 수 없다는 Eclipse 문제라고 생각합니다.

관련 문제