SQLite更新后刷新列表视图 - 使用微调器重新查询

时间:2014-04-15 21:10:59

标签: android sqlite listview android-listview

我有一个自定义列表视图,显示从SQLite数据库中提取的内容。我还能够编辑和更新任何给定行的单个值。我已成功实施更新。

但是,在更新行时,列表视图不会显示更改。我是否应该更改活动并返回更改已实施。根据我的理解,我需要重新查询光标以同步数据更改。

我的问题是我的listview内容可以根据spinner(All,Catergory1,Catatergory2等等)的值进行更改,因此依赖于微调器值,我需要一个不同的游标重新查询,然后需要适配器上的notifyDataSetChanged()。

E.g。

假设我有一个食物数据库:

我可以在显示所有行时编辑和更新行值(未选择类别)。 但是也 当选择的类别是水果时,我可以编辑和更新行值。


因此,依赖于微调器类别值,我必须运行特定的游标重新查询。

我试图通过一系列'if语句'来调用我的原始类,以确定微调器值,然后选择要运行的正确游标,但是这需要方法是静态的,这在返回微调器时是不允许的值。

请告知。

2 个答案:

答案 0 :(得分:0)

我有一个可以帮助你的代码,我用它来刷新城市的列表视图,具体取决于在前一个微调器上选择的状态

final stateAdapter stateadapter = new stateAdapter(this, StateList);
//customized adapter of state, it´s just an integer and a String

    StateSpinner = (Spinner) findViewById(R.id.spinner1);
    StateSpinner.setAdapter(stateadapter);

    StateSpinner.setOnItemSelectedListener(new OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> parentView, View selectedItemView, int position, long id) {
            State state = (State) StateSpinner.getSelectedItem();
                            //Custom State Class, you may use your custom food class
            ArrayList<City> CitiesList = new ArrayList<City>();

            try {
                            //your new SQLite query to populate the CitiesList

                }
            } catch (Exception ex) {

            }

            cityadapter = new cityAdapter(MyActivity.this, CitiesList);
                            //customized adapter for cities
            CitySpinner = (Spinner) findViewById(R.id.spinner2);
            CitySpinner.setAdapter(cityadapter);

        }

        @Override
        public void onNothingSelected(AdapterView<?> parentView) {
            // your code here
        }
    });

答案 1 :(得分:0)

我找到了requery的替代方法,只需在使用给定值更改数据库后手动更新数组/适配器,然后运行notifyDataSetChanged()命令刷新listview。