嘿。我有一個android spinner項目,其中的行由TextView和ImageView(一個星標,標記用戶已將該特定項目標記爲最愛)組成。現在,當用戶喜歡某個項目時,我想讓星形顯示在微調列表中的該項目旁邊,因此我想重新繪製微調以顯示更新的圖像。我該怎麼做呢?重繪android spinner
我現在正在做的是,我正在用適當的圖像創建一個全新的微調器。這使得我的微調器將所選項目設置爲列表中的第一項,這很煩人 - 我希望它保持不變。我曾嘗試
spinner.setSelection(selectedItem);
這工作比我實際需要的數目(當前選擇的項目的位置)以外的任何號碼,然後再次將選擇微調項目列表中的第一個。
所以:我怎樣才能重新繪製列表與更新的信息,而不必重新創建整個列表,或者,我怎樣才能重新創建列表,仍然保留微調項目選擇?
澄清:這是我在做什麼
// Callback for "favourite"-button
star.setOnClickListener(new ImageButton.OnClickListener() {
@Override
public void onClick(View arg0) {
// Toggle favourite
getActiveSelection().setStarred(getActiveSelection().isStarred() ? false : true);
reloadText();
createSpinner();
}
});
private void createSpinner() {
spinner = ((Spinner)findViewById(R.id.spinner));
ArrayList<HashMap<String, Object>> list = new ArrayList<HashMap<String, Object>>();
HashMap<String, Object> map = new HashMap<String, Object>();
// Populate spinner item list
for(int i=0; i<N; i++) {
SpinnerItem item = getSpinnerItem(i);
map = new HashMap<String, Object>();
map.put("Name", item.getName());
map.put("Icon", (item.isStarred() ? "On" : "Off"));
list.add(map);
}
MySpinnerAdapter aspn = new MySpinnerAdapter(this, list,
R.layout.spinner, new String[] { "Name", "Icon" },
new int[] { R.id.spinnerrow, R.id.spinnerrowicon });
spinner.setAdapter(aspn);
spinner.setSelection(getActiveSelection().getSpinnerPosition());
}
優秀。這樣做,謝謝。 – user573536 2011-02-15 22:36:46