2010-10-08 96 views
2

首先,我是Android新手。所以這可能是一個非常簡單的問題,但我自己找不到答案。在ListView項目上存儲數據

我有兩個活動,我填充第一與一個用戶名和我從遠程請求接收其它數據,而第二個被用來顯示所選擇的用戶的詳細信息。

因此,在某種程度上,我需要使用ListView項目的用戶記錄相關聯,這樣我就可以使用意圖通過其中的一些信息的第二個活動。我不確定它是對還是錯,但我發現我需要創建一個自定義的ArrayAdapter。所以,我創建了一個用戶等級:

class User { 
    public String id; 
    public String name; 
} 

,我想現在我需要寫類似:

class UserAdapter extends ArrayAdapter<User> { 
    ... 
} 

基本上在第一觀看我想顯示:

John Doe 
Mike Brown 
... 

第二個將基於User.id另一個請求並顯示如用戶的一些信息:

John Doe, 45, San Francisco 

我無法找到一個類似的例子,所以我不是很肯定我怎麼能做到這一點。任何參考也會有所幫助。

謝謝。

回答

2

在你UserAdapter,視圖設置爲有用的東西的標籤的「getView」的方法...

view.setTag(id); 

然後你就可以拉出該信息被點擊的東西時,...

@Override 
public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
    Integer id = (Integer) view.getTag(); 
    // ... 
} 
0

我會建議使用的意圖,只傳遞所選用戶的ID。在第二個活動中,您可以使用該ID從數據庫或您正在使用的任何內容中獲取其餘信息。意圖不適合發送大量數據。

+0

是的,這就是我打算做的。但要了解哪個項目被點擊,該項目和用戶記錄必須關聯。所以我的問題是如何將該用戶記錄與ListView項目相關聯。 – pocoa 2010-10-08 02:11:34

1

假設你已經有數據填充一個數組列表,你想:

ArrayList<User> 

所以喲烏爾定製一個ArrayAdapter類,你應該有這些:

private ArrayList<User> items; 
private Context context; 

public UserAdapter (Context context, int textViewResourceId, ArrayList<User> items) { 
                super(context, textViewResourceId, items); 
                this.items = items; 
                this.context = context; 
} 
@Override 
public View getView(int position, View view, ViewGroup parent) { 
    User u = items.get(position); 
    // Then you can get each user detail and 
    // display it however you like in your view 
    u.getId(); 
    u.getName(); 
    // Assuming you have setters and getters setup in your User class 
    return view; 
} 

在你OnClickItemListener,您可以使用「位置」來確定單擊的是哪個項目,並用它來檢索用戶對象。一旦擁有它,您應該可以檢索到其他詳細信息。

相關問題