2011-09-19 82 views
0

每次創建Activity時,我都有一個充滿動態數據集的ListView。爲了簡單起見,可以說每個ListView項目都是一個員工的名字。在引擎蓋下,每個員工都有一個employee_id號碼。該號碼在界面的任何地方都不可見。Android - 用於動態ListView數據的OnClick處理程序?

當我點擊ListView中的員工姓名時,我想啓動另一項活動,將相應員工的employee_id傳遞給該活動。

我明白如何實現ListView的onClick處理程序。我的問題是,我會在哪裏爲每位員工儲存和檢索employee_id?我是否會將其存儲在哈希/地圖中,以及員工出現在列表中的位置?當我點擊時,我只是確定我點擊的列表中的位置,然後使用該位置從哈希中獲得employee_id

回答

4

將ArrayAdapter與列表Employees一起使用 - 假設您有Employee對象。

public class MyActivity extends ListActivity { 
    // list of employees 
    private List<Employee> employees = new ArrayList<Employee>(); 

然後使用OnItemClick中的position參數來獲取員工對象。

public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
    int employee_id = ((Employee) getListAdapter().getItem(position)).getId(); 
    // ... 
} 

您還可以擴展一個ArrayAdapter定製員工的對象列表: How to use ArrayAdapter<myClass>

0

您使用基於某些數據集(例如Employee對象列表)的Adapter。當您在ListView上設置onItemClickListener時,onItemClick方法將獲取作爲基礎數據中位置的int參數。使用它從您的列表中拔出Employee對象,並且有員工ID。

0

我會建議你做上面說的。或者,我並不認爲這是很好的解決方案,我也認爲沒有,但是你可以添加一個沒有內容的標籤(maxHeight和maxWdith都是0或者不可見?從未嘗試過)並設置文本。我不知道它是如何資源明智的。但是你不必再保存這個列表,如果你有一個大列表,這將節省一些內存。