Android,如何从我的数据库更新列表视图中的选定项目?

时间:2015-03-15 07:11:08

标签: android eclipse sqlite listview

到目前为止,这是我的代码,但是当我按下更新按钮时应用程序崩溃了。

我想更新列表中的选定项目,我已经创建了更新活动,允许我在数据库中加载值,但我无法弄清楚如何加载列表中所选项目的值。

{

        ArrayAdapter<String> ard=new ArrayAdapter<String> (this,android.R.layout.simple_list_item_single_choice,list);
        lv.setAdapter(ard);
        lv.setChoiceMode(ListView.CHOICE_MODE_SINGLE);

          btnupdate.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View arg0) {

                SparseBooleanArray sba = lv.getCheckedItemPositions();
                Intent intent = new Intent(HomeworkInfo.this, UpdateHomework.class);
                startActivity(intent);
                finish();

            }



    });
}

1 个答案:

答案 0 :(得分:2)

构造ArrayAdapter时,它保存传入的List的引用。如果要传入属于Activity成员的List,并稍后更改该Activity成员,则ArrayAdapter仍然保持引用原始列表。适配器不知道您更改了活动中的列表。

您的选择是:

  1. 使用ArrayAdapter的功能修改基础List(add(),insert(),remove(),clear()等)。
  2. 使用新的List数据重新创建ArrayAdapter。 (使用大量资源和垃圾收集。)
  3. 创建自己的派生自BaseAdapter和ListAdapter的类,允许更改基础List数据结构。
  4. 每次更新列表时都使用notifyDataSetChanged()。要在UI-Thread上调用它,请使用Activity的runOnUiThread()。然后,notifyDataSetChanged()将起作用。
  5. 我希望这会对你有所帮助.. 快乐的编码!!