2010-09-08 45 views
1

首先我對android非常陌生(< 4天)。Android初學者:簡單視圖或直接數據庫查詢的適配器?

我試圖圍繞如何將數據庫數據鏈接到視圖和小部件。

我已經做了一些教程,我注意到適配器用於鏈接適配器視圖(據我所知)包含一堆相同的子視圖(如列表,畫廊等)的視圖。因此,適配器負責創建這些子視圖併爲每個數據填充數據(如果我錯了,請糾正我)。

現在,讓我們說我有一個列表視圖,列出酒店例如。列表中的每一行都有酒店名稱和基本評級(例如5星級)。現在,當您點擊列表中的一家酒店時,會顯示一項新活動,顯示該特定酒店的詳細信息。所有的數據都在數據庫中。我知道你有一個適配器管理數據< - >查看鏈接的列表,但什麼是然後管理酒店詳細信息視圖的數據的最佳方式(這不是一個列表,但只是幾個文本視圖和圖像例)?

是否最好只是在意圖中傳遞ID,然後讓細節活動從數據庫中自行獲取數據(在這種情況下是否將查詢存儲在細節活動中?)?或者你是否獲得了所有需要的領域,並直接將這些領域置於意圖之中?你是否需要一個視圖適配器,它實際上並不會產生大量類似的子視圖?

我想我的問題的總結是什麼,而不是一個適配器,而不是處理adapterviews,而是簡單直接的單一視圖。

感謝您提供的任何幫助。

+0

偉大的問題和出色的問 - 我有同樣的困境。 – 2014-01-10 22:44:40

回答

2

是它最好只通過ID的意圖,然後讓細節活動來去自身的DB 的數據(在這種情況下,我存儲在細節活動查詢?)?

這就是我會推薦的。

你是否需要一個視圖適配器,它實際上並不會生成大量類似的子視圖?

不可以,你只能使用AdapterAdapterViewListViewSpinner等)

我想我的問題的總結做,當你使用,而不是一個適配器是什麼沒有處理 adapterviews,而只是簡單直接的單個視圖。

只是從數據庫中的Cursor。從Cursor的(一)行中獲取字段,將它們放在EditText小部件中,當用戶進行更改時,更新該行。

+0

對我有意義。感謝您的簡單答案。 – nebs 2010-09-08 18:10:51

0

@CommonsWare是爆炸性的。作爲一個代碼示例,我可以通過創建一個幫助器方法來動態設置TextView,使其更乾淨。

在我onCreate()我公司擁有一批以下行:

bindTextView(hotel, "uid"); // `hotel` is the Hotel object with attributes. 

然後我在下面定義bindTextView()如下:

protected void bindTextView(Hotel hotel, String attribute) { 

    try { 

     // Get field for object dynamically. 
     Field field = hotel.getClass().getField(attribute); 

     // Invoke field "getter" method to get value. 
     String value = field.get(hotel).toString();                 

     // Get resource id dynamically. 
     int resourceId = R.id.class.getField(attribute).getInt(null);            

     // Get element with resource id. 
     TextView element = (TextView) this.findViewById(resourceId);            

     // Finally, set the element's text value. 
     element.setText(value); 

    } catch (IllegalAccessException e) { e.printStackTrace();              

    } catch (NoSuchFieldException e) { e.printStackTrace(); }              

} 

我居然動這個輔助方法到基地Activity類,因爲它在許多不同的活動中共享。

我希望能幫助一些人保持活動的清潔。

JP