2016-06-28 57 views
1

我有鍵和值的列表, key =是來自表的id的字符串。 value =是一個名字的字符串,在沒有散列表結構的情況下使用鍵值和微調值

我想顯示內部微調視圖只有沒有Id的vaulues,但是在用戶點擊某個項目之後,我需要獲取所選項目的Id,並將其用於碼。 如何使用hashMap或許多foreach語句來實現這個結構?

謝謝

+0

您需要將id保存在鏈接中,並在點擊時將其作爲參數傳遞給函數(controller)。 –

+0

@ Stallion 我試圖使用hashmap,但它非常緩慢..你有什麼想法嗎? – user6319790

+0

@ Gaurava Agarwal如何將它傳遞給onClick函數? – user6319790

回答

0

創建POJO類並將自定義對象的ArrayList傳遞給您的微調器。

class MyClass{ 
    private String id; 
    private String key; 

    public MyClass(String id, String value) { 
     this.id = id; 
     this.value = value; 
    } 


    public String getId() { 
     return id; 
    } 

    public void setId(String id) { 
     this.id = id; 
    } 

    public String getValue() { 
     return value; 
    } 

    public void setValue(String value) { 
     this.value = value; 
    } 

    @Override 
    public String toString() { 
     return value; 
    } 
} 

覆蓋toString()方法很重要。這將在微調項目中顯示。

你可以把它傳遞給你的ArrayAdapter這樣的:

ArrayAdapter userAdapter = new ArrayAdapter(this, R.layout.spinner, myList); 

當用戶點擊一個項目,getSelectedItem()方法會給你反對。您可以從那裏獲得id

docs

由任意對象的數組支持的具體BaseAdapter。默認情況下,這個類期望提供的資源id引用單個TextView。如果您想使用更復雜的佈局,請使用也需要字段ID的構造函數。該字段ID應在較大的佈局資源中引用TextView。

但是,TextView被引用,它將被填充數組中每個對象的toString()。您可以添加自定義對象的列表或數組。重寫對象的toString()方法以確定列表中的項目將顯示哪些文本。

+0

我可以發送對象列表到微調適配器嗎?不僅String arry與ArrayAdapter一起工作? – user6319790

+0

我需要自己實現ArrayAdapter嗎? – user6319790

+0

不,你不知道。如果你只顯示'value',ArrayAdapter就沒問題。 https://developer.android.com/reference/android/widget/ArrayAdapter.html –

0

點擊監聽器收到點擊的視圖。 類視圖支持'ViewHolder'模式(如在RecyclerView中),其中對所有小部件的引用存儲在ViewHolder中,並且可以稍後訪問。您可以使用相同的方法 - 創建類,包含一些信息和引用以單擊偵聽器,然後將其設置爲由View.setTag()創建的下拉項目。當選擇項目時,查詢此對象並調用您要執行的可運行 - 您的操作

+0

我需要使用自定義微調嗎?或者你的回答是更好的建議? – user6319790

+0

您必須實現自定義數組適配器 - 將值存儲在點擊偵聽器並在創建視圖時將其設置爲標記 –

相關問題