这是我的微调器活动:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.item_listview);
myspinner = (Spinner)findViewById(R.id.spinnertype);
ArrayAdapter adapter = ArrayAdapter.createFromResource(this,R.array.type_arrays,R.layout.support_simple_spinner_dropdown_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
myspinner.setAdapter(adapter);
myspinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
(i assume its some kind of setfilter here)
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
}
在我的字符串资源文件下,我有5个项目(所有,水果,肉类,乳制品,蔬菜)作为下拉式微调器。 我希望listview在我按下“all”时显示所有内容,并在我按下“fruit”时过滤掉其他类型。
我是否需要为微调器创建另一个自定义适配器?
答案 0 :(得分:1)
我认为您只需设置相应的WHERE子句,重新执行ListView的查询,然后使用yourListViewAdapter.swapCursor(yourcsr)
或yourListViewAdapter.notiftDataSetChanged
,这将刷新ListView。
如果为ListView使用数组,则添加一个步骤,如果需要,重建数组并使用notifyDataSetChanged(只有在csr是ListView的源时才能使用swapCursor)。
e.g。 (虽然这改变了另一个微调器的适配器(微调器和列表视图是相似的,实际上我在某些情况下使用单个适配器))
shopspinner.setOnItemSelectedListener(
new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> adapterView, View view,
int position, long rowid) {
currentshopid = rowid;
aislefilter = AISLESHOPREF_COLUMN + " = " +
Long.toString(currentshopid);
alcsr = dbaislemethods.getAisles(aislefilter,aisleorderby);
aislelistadapter.swapCursor(alcsr);
}
@Override
public void onNothingSelected(AdapterView<?> adapterView) {
}
});