谷歌的官方示例BasicSyncAdapter是Android Studio工程,html
把它依樣畫葫蘆到Eclipse上,而後改形成我須要的樣式。java
看官方示例源碼的時候,看到EntryListActivity,名字長得好官方啊,查查android
package com.example.android.basicsyncadapter; import android.os.Bundle; import android.support.v4.app.FragmentActivity; /** * Activity for holding EntryListFragment. */ public class EntryListActivity extends FragmentActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_entry_list); } }
谷歌大神說這個傢伙就是作basicsyncadapter的時候建的Activity,不是什麼官方物體,是FragmentActivity的衍生物。數組
而另外一個ListAcitvity的東東就沒這麼簡單了,app
java.lang.Object | |||||
↳ | android.content.Context | ||||
↳ | android.content.ContextWrapper | ||||
↳ | android.view.ContextThemeWrapper | ||||
↳ | android.app.Activity | ||||
↳ | android.app.ListActivity |
Adapter 是什麼?(適配器)框架
Adapter自己只是一個接口,它派生了ListAdapter、SpinnerAdapter兩個子接口。ListAdapter爲AbsListView提供列表項、SpinnerAdapter爲AbsSpinnerAdapter提供列表項。幾乎全部的Adapter都繼承了BaseAdapter,而BaseAdapter同時實現了ListAdapter和SpinnerAdapter兩個接口,所以BSEAdapter及其子類能夠同時爲ABSListView和AbsSpinner提供列表項。ide
另外android-common-tookit 還爲adapter包設計了三類Adapter(繼承自官方的Adapter):CommonAdapter、CommonPagerAdapter、HolderAdapter。Android是徹底遵循MVC模式設計的框架,Activity是Controller,layout是View 。由於layout有數種佈局,不少數據不能直接綁定上去,所以Android引入了Adapter機制,做爲複雜數據的展現的轉換載體,各類Adapter只是轉換的方式和能力不同。佈局
Adapter經常使用來管理數據,使數據綁定到控件變得更簡單靈活(好比列表的數據,網格的數據),爲容器提供子視圖,利用視圖的數據和元數據來構建每一個子視圖。fetch
(思路)好比這樣 bear 調用了 monkey 的方法a 可是a方法的參數改了 , 這樣bear 的代碼也得改; 在中間加一個adapter,叫abc 這樣bear 調用abc,abc調用monkey ;當monkey 的a方法發生改變時,不用改bear ,改abc就能夠了。 這樣能夠保證變化性集中到abc(我的以爲adapter很像支付寶t.t)ui
而其餘相似的經常使用實現類adapter,谷歌大神是怎麼去實現他們的呢?
BaseAdapter:一般用於被擴展,擴展BaseAdapter能夠對各項列表項進行最大限度的定製,extends Object
ArrayAdapter:簡單、易用的Adapter,經常使用於將數組或者list集合的多個值包裝成多個列表項,extends BaseAdapter
SimpleAdapter:功能強大,用於將 list集合的多個對象包裝成多個列表項,extends BaseAdapter
SimpleCusorAdapter:與SimpleAdapter基本類似,只能用於包裝Cursor提供的數據,extends ResourceCursorAdapter
今天要練的basicsyncadapter並非一個內建adapter,只是sample..(∩_∩)
BasicSyncAdapter
This sample demonstrates using SyncAdapter to fetch background data for an app that doesn't require a user-visible account type or 2-way synchronization. This sample periodically downloads the feed from the Android Developer Blog and caches the data in a content provider. At runtime, the cached feed data is displayed inside a ListView.