我有鍵和值的列表, key =是來自表的id的字符串。 value =是一個名字的字符串,在沒有散列表結構的情況下使用鍵值和微調值
我想顯示內部微調視圖只有沒有Id的vaulues,但是在用戶點擊某個項目之後,我需要獲取所選項目的Id,並將其用於碼。 如何使用hashMap或許多foreach語句來實現這個結構?
謝謝
我有鍵和值的列表, key =是來自表的id的字符串。 value =是一個名字的字符串,在沒有散列表結構的情況下使用鍵值和微調值
我想顯示內部微調視圖只有沒有Id的vaulues,但是在用戶點擊某個項目之後,我需要獲取所選項目的Id,並將其用於碼。 如何使用hashMap或許多foreach語句來實現這個結構?
謝謝
創建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()方法以確定列表中的項目將顯示哪些文本。
我可以發送對象列表到微調適配器嗎?不僅String arry與ArrayAdapter一起工作? – user6319790
我需要自己實現ArrayAdapter嗎? – user6319790
不,你不知道。如果你只顯示'value',ArrayAdapter就沒問題。 https://developer.android.com/reference/android/widget/ArrayAdapter.html –
點擊監聽器收到點擊的視圖。 類視圖支持'ViewHolder'模式(如在RecyclerView中),其中對所有小部件的引用存儲在ViewHolder中,並且可以稍後訪問。您可以使用相同的方法 - 創建類,包含一些信息和引用以單擊偵聽器,然後將其設置爲由View.setTag()創建的下拉項目。當選擇項目時,查詢此對象並調用您要執行的可運行 - 您的操作
我需要使用自定義微調嗎?或者你的回答是更好的建議? – user6319790
您必須實現自定義數組適配器 - 將值存儲在點擊偵聽器並在創建視圖時將其設置爲標記 –
您需要將id保存在鏈接中,並在點擊時將其作爲參數傳遞給函數(controller)。 –
@ Stallion 我試圖使用hashmap,但它非常緩慢..你有什麼想法嗎? – user6319790
@ Gaurava Agarwal如何將它傳遞給onClick函數? – user6319790