android非同步數據載入
Ⅰ 如何在Android開發中動態載入的list列表數據
Android中載入list列表數據主要是通過Adapter實現,可用顯示列表的控制項如下:
Listview
GridView
ExpandListview
顯示具體的數據需要通過Adapter實現,Android目前有4種Adapter:
ArrayAdapter
SimpleAdapter
SimpleCursorAdapter
BaseAdapter ( 自定義Adapter)
具體操作步驟 ( 以自定義Adapter為例):
在xml中定義Listview布局
在代碼中通過ID找到Listview控制項
構建Adapter對象,新建一個類繼承自BaseAdapter,重寫它的四個方法,具體如下代碼
構造好適配器後設置Listview的adapter對象為新建的適配器,界面即可顯示數據
在數據變動的地方,只需要調用adapter的notifyDataSetChanged方法即可刷新界面
java">packagecom.beryl.gougou;
importandroid.content.Context;
importandroid.view.LayoutInflater;
importandroid.view.View;
importandroid.view.ViewGroup;
importandroid.widget.BaseAdapter;
importjava.util.List;
/**
*Createdbyyton16/11/14.
*/
{
privateList<String>datalist;
privateLayoutInflaterinflater;
publicMyAdapter(Contextcontext,List<String>datalist){
this.datalist=datalist;
inflater=LayoutInflater.from(context);
}
@Override
publicintgetCount(){
returndatalist.size();
}
@Override
publicObjectgetItem(intposition){
returndatalist.get(position);
}
@Override
publiclonggetItemId(intposition){
returnposition;
}
@Override
publicViewgetView(intposition,ViewconvertView,ViewGroupparent){
//此處參考網上的view緩存機制,示例demo不多說明
returnnull;
}
}
Ⅱ Android電子書app中,離線緩存是不是非同步數據載入載入技術完成的,如果是,原理是什麼
離線緩存就是在網路暢通的情況下將從伺服器收到的數據保存到本地,當網路斷開之後直接讀取本地文件中的數據。
將網路數據保存到本地:
你可以自己寫一個保存數據成本地文件的方法,保存在android系統的任意目錄(當然是有許可權的才行),但是在這種情況下使用Context的openFileOutput方法最簡便也最符合我們的場景,下面的saveObject方法演示了如何用openFileOutput將數據保存在本地的一個文件中:
saveObject
public static boolean saveObject(Serializable ser, String file) {
FileOutputStream fos = null;
ObjectOutputStream oos = null;
try {
fos = AppContext.getInstance().openFileOutput(file, AppContext.getInstance().MODE_PRIVATE);
oos = new ObjectOutputStream(fos);
oos.writeObject(ser);
oos.flush();
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
} finally {
try {
oos.close();
} catch (Exception e) {
}
try {
fos.close();
} catch (Exception e) {
}
}
}
openFileOutput可以直接獲得一個和應用關聯的文件路徑(在/data/data//files下面),然後使用java io中的ObjectOutputStream將序列化的對象寫入(writeObject)到得到的文件中,你可以看到上面的實現過程有兩個關鍵方法:openFileOutput、writeObject以及調用它們的兩個關鍵對象Context和ObjectOutputStream。關於序列化可以參看這篇文章:Java對象的序列化和反序列化實踐
Ⅲ Android 非同步載入數據 創建子進程下載數據,ListView第一次載入無數據,第二次載入載才有數據
因為是非同步的,你下載完數據;需要再 進行 adapter.notifyDataSetChanged();