編輯:關於Android編程
Android應用很多情況下存儲大量數據都會用SQliter,使用sqlliter不免要和cursor打交道,靈活使用cursor會省很多事。如將自己的數據組合在一個虛擬的表中(數據集合),通過Provider以cursor形式返回給用戶,還可以規定cursor每取一次返回多少記錄,以減少UI數據量大的負載壓力。(如果只是封裝下數據以cursor方式返回,MetrixCursor可以完成此需求,其publicvoid addRow (Object[]columnValues)方法可以幫你維護添加進去的對象數組數據)。
具體實現代碼如下:
final Map紅色部分是要注意的代碼,開始是這麼寫的:data = new HashMap (); data.put(wifi,on); Cursor cursor = new AbstractCursor() { private String[] names; /** * 記錄數 * @return */ @Override public int getCount() { return data.size() > 0 ? 1 : 0; } /** * 獲取每一列的名稱,對於SharedPreferences 就是每一個key * @return */ @Override public String[] getColumnNames() { if(names == null) { names = new String[0]; if (!data.isEmpty()) { names = new String[data.size()]; Set keySet = data.keySet(); names = (String[])keySet.toArray(new String[0]); } } return names; } @Override public String getString(int column) { String key = names[column]; return (String)data.get(key); } @Override public short getShort(int column) { return 0; } @Override public int getInt(int column) { return 0; } @Override public long getLong(int column) { return 0; } @Override public float getFloat(int column) { return 0; } @Override public double getDouble(int column) { return 0; } @Override public boolean isNull(int column) { return false; } };
if(names == null) { names = new String[0]; if (!data.isEmpty()) { names = new String[data.size()]; Set但是Set有提供的轉成Array的方法toArray(),於是改成了keySet = data.keySet(); int i = 0; for (String key : keySet) { names[i++] = key; } } }
names = (String[])keySet.toArray();但是結果是錯誤的,打斷點跟蹤後發現cursor中是有數據的,但是如果取得花是會出錯的。
對於Set而言,它只知道它內部保存的是Object,所以默認情況下,toArray只能是返回一個由這些Object構成的Object數組出來。
但程序的作者或許更清楚其內部元素的更具體的類型,因此,Set類提供了toArray的另一個重載版本,允許用戶指定一種比Object[]更具體的數組類型,方法是傳遞一個用戶想要的數組類型的一個數組實例進去,多長都無所謂(因此我們常常使用一個0長度的,畢竟把類型帶進去就OK了),於是,toArray內部就會按照你想要的這種類型,給構造一個數組出來。這樣構造出來的數組,當然是很安全地被調用者轉換回那個實際的類型。
實現轉輪的選擇功能,效果見下圖:本項目是由這個項目修改而成,不過基本上除了原來的大體框架以外,內部的實現邏輯全都做了大量修改,各位看官可以對比參考,在此必須感謝原作者給我
Android聯系人中的ListView是做得比較獨特的,但是源碼寫得比較復制,當我們想使用他的時候再從源碼中提取,實屬不易啊,而且容易出錯,這幾天,我把他提取出來了,寫
本篇文章是繼續上篇文章的續篇。主要目的是:通過Service來執行圖片壓縮任務來討論如何使用Service,如何處理任務量大的並發問題。了解下Service大家都知道如果
本文實例講述了Android實現button居中的方法。分享給大家供大家參考。具體如下:通過在main.xml 或者其他xml 布局文件中布局Button的時候,選擇An