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

Posted

技术标签:

【中文标题】Android,如何从我的数据库更新列表视图中的选定项目?【英文标题】:Android, How do i Update the selected item in my listview from my database? 【发布时间】:2015-05-17 11:10:54 【问题描述】:

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

我想更新列表中的选定项目,我已经创建了更新活动,允许我将值加载到我的数据库中,但我不知道如何加载列表中选定项目的值。



        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();

            



    );

【问题讨论】:

你能显示崩溃日志吗 在粘贴到这里之前最好先去掉代码中的制表符,并将所有多行代码缩进 4 个空格(选择块后使用 Ctrl+K)。 【参考方案1】:

当一个 ArrayAdapter 被构造时,它持有传入的 List 的引用。如果你要传入一个作为 Activity 成员的 List,然后更改该 Activity 成员,ArrayAdapter 仍然持有一个参考原始列表。 Adapter 不知道你更改了 Activity 中的 List。

您的选择是:

    使用ArrayAdapter的函数修改底层List(add()、insert()、remove()、clear()等) 使用新的 List 数据重新创建 ArrayAdapter。 (使用大量资源和垃圾收集。) 创建您自己的派生自 BaseAdapter 和 ListAdapter 的类,该类允许更改基础 List 数据结构。 每次更新列表时使用 notifyDataSetChanged()。要在 UI-Thread 上调用它,请使用 Activity 的 runOnUiThread()。然后, notifyDataSetChanged() 将起作用。

我希望这对你有帮助.. 编码快乐!!

【讨论】:

以上是关于Android,如何从我的数据库更新列表视图中的选定项目?的主要内容,如果未能解决你的问题,请参考以下文章

如何更新列表视图中的记录以及android中的数据库

Android如何从同一个数组中仅显示列表视图中的某些项目?

android listview更新/刷新数据而不关闭应用程序

如何在列表视图中获取所选项目的值 - Android

Swift - 从不同的视图更新列表

如何从我的 Android 代码在 web 视图中运行 React JS 函数?