編輯:高級開發
通過Adapter我們構造一個支持icon的item,下面我們在getView中使用的是imageVIEw顯示圖片,當然android123提示大家其實TextView也可以直接綁定一個drawable對象顯示的,void setCompoundDrawables(Drawable left, Drawable top, Drawable right, Drawable bottom) 或void setCompoundDrawablesWithIntrinsicBounds(int left, int top, int right, int bottom) 和void setCompoundDrawablesWithIntrinsicBounds(Drawable left, Drawable top, Drawable right, Drawable bottom) 即可,其中第二種的int類型指定的資源id,方位則是textvIEw什麼位置顯示drawable對象
說了這麼多ArrayAdapater一起看個例子,來實例化ArrayAdapter吧,我們可以修改Res/layout/icon_list_item.XML文件來實現自定義顯示效果。
public class IconListAdapter extends ArrayAdapter<IconListAdapter.IconListItem> {
protected LayoutInflater mInflater;
private static final int mResource = R.layout.icon_list_item; //XML布局文件
public IconListAdapter(Context context,
List<IconListItem> items) {
super(context, mResource, items);
mInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
@Override
public View getView(int position, View convertView, VIEwGroup parent) {
TextVIEw text;
ImageVIEw image;
View vIEw;
if (convertVIEw == null) {
vIEw = mInflater.inflate(mResource, parent, false);
} else {
view = convertVIEw;
}
text = (TextView) view.findVIEwById(R.id.text1);
text.setText(getItem(position).getTitle());
image = (ImageView) view.findVIEwById(R.id.icon); //可以使用上文說的三種方法,直接用TextVIEw類的setCompoundDrawables等方法綁定圖標顯示
image.setImageResource(getItem(position).getResource());
return vIEw;
}
public static class IconListItem { //每條顯示的構造方法
private final String mTitle;
private final int mResource;
public IconListItem(String title, int resource) {
mResource = resource;
mTitle = title;
}
public String getTitle() {
return mTitle;
}
public int getResource() {
return mResource;
}
}
}
當然對於ArrayAdapter到底比BaseAdapter先進到哪裡呢? 從名稱來看Array我們可以聯系到數組的很多操作,沒錯android123給大家列出本類所有成員方法實用的處理方式,比如
void add(T object) //添加一個對象到本ArrayAdapter
void clear() //清除所有元素
static ArrayAdapter<CharSequence> createFromResource(Context context, int textArrayResId, int textVIEwResId) //從layout資源構造arrayadapter
Context getContext() //獲取實例
int getCount()
View getDropDownView(int position, View convertView, VIEwGroup parent) //獲取drop down的popup風格選擇條目的內容,參數1是位置,參數2可以通過強制轉換直接獲取本條的內容
Filter getFilter() //使用正則過濾數據
T getItem(int position) //獲取單條內容
long getItemId(int position)
int getPosition(T item) //通過內容獲取是某條
View getView(int position, View convertView, VIEwGroup parent)
void insert(T object, int index) //插入新條目到數組的index位置
void notifyDataSetChanged() //通知數據變化了,告訴綁定Adapter的widget來更新UI
void remove(T object) //移出一條從數組,這裡並沒有指定位置
void setDropDownVIEwResource(int resource) //設置dropdown的layout風格
Sets the layout resource to create the drop down vIEws.
void setNotifyOnChange(boolean notifyOnChange) //本條是arrayadapter最強大的功能,android123強烈推薦處理大數據時使用該方法,可以降低ui的處理量,刷新ui可以更快速,主要可以停止對
(add(T), insert(T, int), remove(T), clear() 的操作,當然可以通過 notifyDataSetChanged(). 或 setNotifyOnChange(true) 通知變化
void sort(Comparator<? super T> comparator) //這裡是android開發網經常用的排序,使用arrayadapter可以直接排序,十分方便
所以最終android123推薦大家什麼情況使用arrayadapter,什麼時候使用baseadapter。當數量較多,比如超過100條或頻繁動態增減時使用arrayadapter可以方便控制ui,通過setNotifyOnChanage方法,如果比較簡單僅僅呈現直接從baseadapter更節省資源
Android 拖/放框架允許用戶將數據從一個View到另一個視圖在當前布局中使用圖形化的拖放動作。該框架包括以下三個重要組成部分,支持拖放功能:拖動事件類拖動監聽器輔助
android開發語言在中國的前景十分廣闊,首先是有成熟的消費者,包括OPPO,中國移動,中國聯通,華為通訊,聯想等大企業都在關注這個操作系統,希望能給他們帶來更多的收
如果你曾經是一名WEB前台設計師,如果你曾經有過設計的功底,那麼你很榮幸,如果你切到android平台中,以前的知識和經驗都能很好的移植到android平台中。本人以為
全球為數眾多的移動電話用戶從未使用過任何基於android JDK 日志框架,谷歌的目標是讓不依賴於設備甚至平台,希望大家看完本文能給大家帶來相關幫助。日志記錄對於軟件