【发布时间】:2014-08-06 19:53:18
【问题描述】:
我有一个带有自定义 ArrayAdapter 和自定义项的 ListView。这些项目包含多个视图元素,包括一个 Spinner。这个 Spinner 的 ArrayAdapter 是这样设置的:
// Method to set or update the Tags in the Spinner
public void updateTagsSpinner(MyHolder h, Spinner sp){
if(h != null && h.orderedProductItem != null){
// If the given Spinner null, it means we change the OrderedProductItem's Spinner
// Is the given Spinner not null, it means we change the Manage Tag's PopupWindow's Spinner
if(sp == null)
sp = h.spTags;
// We know it's an ArrayAdapter<String> so we just ignore the
// "Unchecked cast from SpinnerAdapter to ArrayAdapter<String>" warning
@SuppressWarnings("unchecked")
ArrayAdapter<String> spAdapt = (ArrayAdapter<String>) sp.getAdapter();
ArrayList<String> tagStrings = Controller.getInstance().getAllTagsWithOrderedProductItem(h.orderedProductItem));
if(tagStrings != null && tagStrings.size() > 0){
if(spAdapt == null){
spAdapt = new ArrayAdapter<String>(ChecklistActivity.this, android.R.layout.simple_spinner_item, tagStrings);
spAdapt.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
// ArrayAdapter's setNotifyOnChange is true by default,
// but I set it nonetheless, just in case
spAdapt.setNotifyOnChange(true);
sp.setAdapter(spAdapt);
}
else{
spAdapt.clear();
spAdapt.addAll(tagStrings);
}
}
sp.setSelection(h.orderedProductItem.getSelectedFilter());
}
}
由于某种原因,每次我向下滚动然后再次向上滚动时,我的 Spinner 都是空的。当我点击它们时,我什至无法再打开任何 Spinner(包括那些不为空的),因为警告:
W/InputEventReceiver(899):尝试完成输入事件,但输入事件接收器已被释放。
【问题讨论】:
标签: android android-listview android-arrayadapter android-spinner