我有一个 android 微调器项目,其中的行由 TextView 和 ImageView (星号,以标记用户已将该特定项目标记为收藏夹)组成。现在,当用户收藏某个项目时,我想让星星出现在微调器列表中该项目的旁边,所以我想重新绘制微调器以显示更新的图像。我该怎么做呢?
我现在正在做的是创建一个全新的微调器,带有适当的图像。这使我的微调器将所选项目设置为列表中的第一项,这很烦人 - 我希望它保持不变。我试过了
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());
}