Android 의 Adapter 와 BaseAdapter 의 소개
//frameworks\base\core\java\android\widget\Adapter.java
/**
* Adapter AdapterView ;
* Adapter ; View。
*/
public interface Adapter {
/**
* Observer, Adapter , 。
* DataSetObserver , onChanged onInvalidated 。
*/
void registerDataSetObserver(DataSetObserver observer);
/**
* Observer
*/
void unregisterDataSetObserver(DataSetObserver observer);
/**
* Adapter
*/
int getCount();
/**
*
*/
Object getItem(int position);
/**
* ID
*/
long getItemId(int position);
/**
* ID ,
* ID, true
*/
boolean hasStableIds();
/**
* View; View XML ;
* View , View(GridView, ListView...) ,
* android.view.LayoutInflater#inflate(int, android.view.ViewGroup, boolean)
* View, View 。.
*
* @param position
* @param convertView View; : , , ;
* View, View;
// View , Android ,AdapterView View 。
// 100 , 10 , 10 View,
// 11 View , 1 View , ,
// View , ,
// IGNORE_ITEM_VIEW_TYPE ,
* Heterogeneous View , ,View 。
* @param parent View 。
* @return , View。
*/
View getView(int position, View convertView, ViewGroup parent);
/**
* AdapterView View ;
* , getView(int, View, ViewGroup) View , 。
*/
static final int IGNORE_ITEM_VIEW_TYPE = AdapterView.ITEM_VIEW_TYPE_IGNORE;
//
/**
* getView, View
* @return View ; getView View , ;
* : 0 getViewTypeCount-1 , IGNORE_ITEM_VIEW_TYPE。
* @see #IGNORE_ITEM_VIEW_TYPE
*/
int getItemViewType(int position);
/**
* getView View , getView View;
* , , 1.
* AdapterView , ;
*/
int getViewTypeCount();
static final int NO_SELECTION = Integer.MIN_VALUE;
/**
* , true; View;
* getCount() == 0, getCount() header footers ,
* , 。
*/
boolean isEmpty();
}
//frameworks\base\core\java\android\widget\BaseAdapter.java
/**
* , Adapter ;
* ListView( ListAdapter ), Spinner( SpinnerAdapter );
*/
public abstract class BaseAdapter implements ListAdapter, SpinnerAdapter {
private final DataSetObservable mDataSetObservable = new DataSetObservable();
public boolean hasStableIds() {
return false;
}
public void registerDataSetObserver(DataSetObserver observer) {
mDataSetObservable.registerObserver(observer);
}
public void unregisterDataSetObserver(DataSetObserver observer) {
mDataSetObservable.unregisterObserver(observer);
}
/**
* , , View 。
*/
public void notifyDataSetChanged() {
mDataSetObservable.notifyChanged();
}
/**
* , ; 。
*/
public void notifyDataSetInvalidated() {
mDataSetObservable.notifyInvalidated();
}
public boolean areAllItemsEnabled() {
return true; // ,
}
public boolean isEnabled(int position) {
return true; //
}
public View getDropDownView(int position, View convertView, ViewGroup parent) {
return getView(position, convertView, parent);
}
public int getItemViewType(int position) {
return 0; // 0,
}
public int getViewTypeCount() {
return 1; // 0,
}
public boolean isEmpty() {
return getCount() == 0; // 0
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.