gpt4 book ai didi

android - 将数据发送到我的 RV 适配器时出现问题,我该如何解决?

转载 作者:行者123 更新时间:2023-11-29 23:11:22 25 4
gpt4 key购买 nike

我正尝试在我的应用程序中为某些消息添加附加文件。我设法做到了,但我的方法是基于带有适配器的自定义 RV,我将文件夹和文件列表发送到该适配器。我决定使用 onActivityResult。我做了这样的事:

public void showDialod() {
if (isReadStoragePermissionGranted()) {
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("*/*");
startActivityForResult(intent, 7);
} else {
isReadStoragePermissionGranted();
}
}

@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_OK && requestCode == 7) {
if (data != null && data.getData() != null) {
Uri selectedImageUri = data.getData();

convertFileToString(ImageFilePath.getPath(this, selectedImageUri));
Log.i("m", ImageFilePath.getPath(this, selectedImageUri));
}
}
}

一般来说,我的数组中充满了所有重要数据,但在更改附加文件的方法后我无法显示附加文件。这是我显示附件的方法的代码:

private void getImages() {
mNames.clear();
adapter.updateNames(mNames);
adapter.notifyDataSetChanged();


if (extras != null) {
if (extras.containsKey("attached_files")) {
for (int j = 0; j < Objects.requireNonNull(draft_files).size(); j++) {
mNames.add(draft_files.get(j));
}
for (int i = 0; i < array.size(); i++) {
JsonObject object = array.get(i).getAsJsonObject();
mNames.add(object.get("filename").toString().substring(1, object.get("filename").toString().length() - 1));
}

adapter = new AttachedFileAdapter(mNames, getApplicationContext());
adapter.updateNames(mNames);
adapter.notifyDataSetChanged();
recyclerView.setAdapter(adapter);

} else {
for (int i = 0; i < ms.getArray().size(); i++) {
JsonObject object = ms.getArray().get(i).getAsJsonObject();
mNames.add(object.get("filename").toString().substring(1, object.get("filename").toString().length() - 1));
adapter.updateNames(mNames);
adapter.notifyDataSetChanged();
recyclerView.setAdapter(adapter);
}
}
} else {
for (int i = 0; i < ms.getArray().size(); i++) {

JsonObject object = ms.getArray().get(i).getAsJsonObject();
mNames.add(object.get("filename").toString().substring(1, object.get("filename").toString().length() - 1));
adapter.updateNames(mNames);
adapter.notifyDataSetChanged();
recyclerView.setAdapter(adapter);
}


}
}

据我所知,我没有向我的 RV 适配器发送任何数据,我不明白为什么它取决于附加文件的方法。也许有人可以帮助我?

最佳答案

创建适配器完成后,您无需再次创建适配器。只需更新您的 ArrayList(例如从列表中添加、删除、更新对象)并使用 adapter.notifyDataSetChanged() 来反射(reflect)更改。您也不需要总是setAdapter()。喜欢

onCreate() 中1.创建recyclerView对象2.创建List对象3.通过传递List创建适配器对象

每当数据改变时:1. 像新对象添加、删除或更新到 arrayList 然后使用 adapter.notifyDataSetChanged()

关于android - 将数据发送到我的 RV 适配器时出现问题,我该如何解决?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55982289/

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