从片段访问数据库以在列表中显示

Posted

技术标签:

【中文标题】从片段访问数据库以在列表中显示【英文标题】:Access a Database fromout a Fragment to DIsplay in List 【发布时间】:2018-05-10 23:05:04 【问题描述】:

好的,所以我试图在这里了解所有这些其他问题,但我没有掌握它,所以我决定自己问。 我有一个带有不同片段的主活动来更改视图(使用 android 标准侧边栏活动模板)。从那里,用户通过返回值的单独 Acitivty 创建任务。在主活动中,任务被存储到 SQLite 数据库中。到目前为止它有效。

现在我有了带有相应布局 TaskList_main.xml 的 Fragment TaskList。在这个 XML 文件中,我得到了一个简单的 ListView,我想用数据库中的值填充它。我的问题是在哪里编写该方法以及何时访问它。该方法将是

public void showAllListEntries() 

    List<TaskData> TaskList = datasource.getAllTasks();
    //Daten werden im ArrayAdapter gespeichert
    ArrayAdapter<TaskData> TaskListArrayAdapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, TaskList);

    ListView TaskDataListView = (ListView) findViewById(R.id.TaskListView);
    TaskDataListView.setAdapter(TaskListArrayAdapter);

我的 Fragment 像这个 atm 一样是空的

public class TaskList extends Fragment 
View view;

@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) 
    view = inflater.inflate(R.layout.activity_main_tasklist, container, false);

    return view;


如果你愿意,我也可以发送主 Activity,但它有点乱

那么有人可以告诉我如何让它工作吗?我是否清楚地解释了我的问题?

【问题讨论】:

我的 Android 有点生疏了,但如果我理解正确的话,最合乎逻辑的放置 showAllListEntries() 方法的位置应该是在 TaskList 片段中...... 然后 id 必须在那里创建我的数据源,到目前为止没有问题,但我无法从 Fragment 获得对我的列表视图的引用,因为 Fragment 不知道“findViewById”方法 您可以在onViewCreated 中获得对ListView 的引用 - 请参阅***.com/questions/6495898/findviewbyid-in-fragment。对于数据源 - 您可以将其引用从您的 Activity 传递给 Fragment 或使用单例。 现在什么是单例? 【参考方案1】:

您可以在onCreateView 中进行操作。但是您应该拨打async 以获取要显示的任务并将您的片段作为侦听器。获得任务后,您可以创建适配器并将其附加到 ListView

而且你应该在TaskList_main.xml 中有一个ProgressBar(应该重命名为task_list_fragment.xml,我认为布局没有命名约定,但这是相当常用的)并在收到数据时隐藏它.

【讨论】:

什么是装载机?如何整合它?异步调用和 Fragment 作为侦听器是什么意思?抱歉问了这么多问题 @einsiedler 抱歉,加载程序我的意思是 ProgressBar。我会编辑答案。我将为异步部分添加一个链接

以上是关于从片段访问数据库以在列表中显示的主要内容,如果未能解决你的问题,请参考以下文章

想要使用片段从导航抽屉活动移动到另一个屏幕,以在所有屏幕上显示抽屉

如何在片段内的 recylerview 列表中显示 SQLite 数据库数据?

如何将列表视图中的数据从一个片段发送到另一个片段

将数据从片段列表视图项传递到活动字符串变量 onitemclicklistener

从图库中获取图像以在片段中的图像视图中设置? [复制]

从公共 API 获取 JSON 以在 SwiftUI 的列表视图中呈现