如何使用微调器过滤掉我的sqlite数据?

时间:2017-01-05 06:03:55

标签: android listview filter android-spinner

这是我的微调器活动:

@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”时过滤掉其他类型。

我是否需要为微调器创建另一个自定义适配器?

1 个答案:

答案 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) {

            }
        });