gpt4 book ai didi

Fragment 中的 Android RecyclerView 未更新加载程序内容

转载 作者:行者123 更新时间:2023-11-30 02:16:48 25 4
gpt4 key购买 nike

我有 Fragment,它使用 RecyclerView AdapterLoaderManager 列出项目。 RecyclerView 我用的是这个 address.我在 Fragment 中实现了 LoaderManager 并将其 Activity 的上下文提供给 RecyclerView

当我将新项目添加到列表时,它不会刷新并在列表中显示新项目。我在另一个 Activity 中使用相同的 Adapter 和结构,效果很好。但是在这里我在 Fragment 中使用 RecyclerViewLoader 并且当我添加项目时它不会刷新列表,而是我必须返回(完成 fragment )并再次输入。

我有 2 个表,例如 this .首先,我从 student_course 表中获取 cursor,然后从该 cursor 中获取特定类(class)的学生 ID。然后使用第一个 cursor 的数据,我从 students 表中得到第二个 cursor ,该表包含来自同一类(class)的学生列表。然后我将第二个 cursor 发送到 adapter。我在 onCreateView()onCreateLoader 上执行以下操作:

String[] projection0 = {
DatabaseOpenHelper.COL_STUDENT_ID,
DatabaseOpenHelper.COL_COURSE_ID};
String selection0=DatabaseOpenHelper.COL_COURSE_ID + "=?";
String selectionArgs0[]={String.valueOf(courseId)};
mDataset0=getActivity().getContentResolver().query(StudentContentProvider.CONTENT_URI2, projection0,selection0,selectionArgs0,null);


if(mDataset0.getCount()!=0) {
//BATCH
List<String> selectionList = new ArrayList<String>();
mDataset0.moveToFirst();

...
String[] projection1 = {
DatabaseOpenHelper.COLUMN_ID,
DatabaseOpenHelper.COL_STUDENT_NUMBER,
DatabaseOpenHelper.COL_STUDENT_NAME,
DatabaseOpenHelper.COL_STUDENT_CARD_ID,
DatabaseOpenHelper.COL_STUDENT_COLOR};
selection1 = selection1.substring(0, selection1.length() - 2) + ")";
mDataset1 = getActivity().getContentResolver().query(StudentContentProvider.CONTENT_URI1, projection1, selection1, selectionArgs1, null);

}else{
mDataset1=null;
}
...
mAdapter = new studentListAdapter(getActivity(),mDataset1,this);

mDataset1是同类同学。

1) 可能是什么问题? 2)里面有没有办法实现LoaderManager类

更新 1: 当我将 selection1selectionArgs1 更改为 null 时,它会更新列表我添加项目后立即。但它显示了每个类(class)的所有学生,因为我没有指定选择。

更新 2: 当我检查 onLoadFinished() 时,我看到新光标在加载新内容后仍然与旧光标相同。

最佳答案

1) 我意识到添加新数据时游标没有改变,所以当我添加新数据时我调用 getLoaderManager().restartLoader(LOADER_ID,null,this)(在我的例子中是通过 localBrodCastManager)重新加载光标(调用 onCreateLoader())并且新数据显示在列表中。 (如建议 here )。这确实有技巧。

2) 我发现添加项目时 cursor 没有改变的原因,因为在 onCreateLoader() 我返回具有特定 id 选择的学生的 cursor,这意味着 cursor 不会更改,直到具有特定 ids< 的项目发生更改 我已经给了。因此,如果添加了新项目,我的 cursor 不会更改,但如果其中一项(列出的)被删除或更改,则光标会更改。解决方案是 here .

关于Fragment 中的 Android RecyclerView 未更新加载程序内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29168805/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com