Java 如何在recyclerview android上以意向字符串数组显示收入?

Java 如何在recyclerview android上以意向字符串数组显示收入?,java,android,android-intent,android-recyclerview,Java,Android,Android Intent,Android Recyclerview,在我的应用程序中,我有可以编辑的草稿消息。我的一些草稿包括我试图发送到编辑活动并在recyclerview上显示的附件。一般来说,我已经成功地发送了我的字符串arraylist,并在活动中获取它。但是我不能显示我的附加文件,尤其是它们的名字。我试着让smth像这样: adapter.notifyDataSetChanged(); 但这对我没有帮助 因此,首先,我从我的邮件中获得附件的名称: file_name = Objects.requireNonNull(response.body()).

在我的应用程序中,我有可以编辑的草稿消息。我的一些草稿包括我试图发送到编辑活动并在recyclerview上显示的附件。一般来说,我已经成功地发送了我的字符串arraylist,并在活动中获取它。但是我不能显示我的附加文件,尤其是它们的名字。我试着让smth像这样:

adapter.notifyDataSetChanged();
但这对我没有帮助

因此,首先,我从我的邮件中获得附件的名称:

file_name = Objects.requireNonNull(response.body()).getAttachesNames();
然后将这些名称放入arraylist:

nameList = new ArrayList<>(Arrays.asList(file_name));
然后我通过intent将我的列表发送到另一个活动:

intent2.putStringArrayListExtra("attached_files", (ArrayList<String>) nameList);
logcat的结果:

W: [eZV9f.jpg, index.html]
初始化我的适配器和recyclerview:

adapter = new AttachedFileAdapter(mNames);
recyclerView = findViewById(R.id.recyclerView);
recyclerView.setLayoutManager(new LinearLayoutManager(WriteResponseMess.this, LinearLayoutManager.VERTICAL, false));
然后我尝试从此列表中获取单个元素并将其添加到我的ArrayList中:

这对我来说是错误的。我试图创建一个单独包含所有元素的列表。我还尝试使用一些与收藏有关的信息,但我没有达到我任务的目标。总的来说,我确信这个解决方案非常简单,但我看不出来

使现代化 我所有的活动类都有1000多行,我将分享与添加附件相关的所有代码,并在我的写作表格中显示附件数据:

这是我的对话框,用于获取目录列表和选择一些文件:

@Override
    protected Dialog onCreateDialog(int id) {
        Dialog dialog = null;
        switch (id) {
            case CUSTOM_DIALOG_ID:
                dialog = new Dialog(WriteResponseMess.this, android.R.style.Theme_DeviceDefault_Light_NoActionBar_Fullscreen);
                dialog.setContentView(R.layout.dialog_layout);
                dialog.setCanceledOnTouchOutside(true);

                Toolbar toolbar = dialog.findViewById(R.id.toolbar_d);
                toolbar.setTitle("Add a new file.");

                textFolder = dialog.findViewById(R.id.folder);
                buttonUp = dialog.findViewById(R.id.up);
                buttonUp.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View view) {
                        ListDir(curFolder.getParentFile());
                    }
                });


                dialog_ListView = dialog.findViewById(R.id.dialoglist);

                final Dialog finalDialog1 = dialog;
                dialog_ListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                    @RequiresApi(api = Build.VERSION_CODES.O)
                    @Override
                    public void onItemClick(AdapterView<?> adapterView, View view, int position, long l) {
                        File selected = new File(curFolder, fileList.get(position));
                        if (selected.isDirectory()) {
                            ListDir(selected);
                        }
                        if (selected.isFile()) {
                            if (array.size() == 0) {
                                array = uploadFiles(array, selected.getName(), convertFileToString(selected.getPath()));
                                adapter.notifyDataSetChanged();
                                getImages();
                            } else {
                                if (array.toString().contains(selected.getName())) {
                                    Toast.makeText(WriteResponseMess.this, R.string.attaching_message, Toast.LENGTH_SHORT).show();
                                    adapter.notifyDataSetChanged();
                                    getImages();
                                } else {
                                    array = uploadFiles(array, selected.getName(), convertFileToString(selected.getPath()));
                                    adapter.notifyDataSetChanged();
                                    getImages();
                                }

                            }
                            finalDialog1.dismiss();
                            ms.setArray(array);
                        }
                    }
                });

                break;
        }

        return dialog;
    }
和显示附加列表的方法,通常,当我创建新邮件并附加新文件时,此方法可以正常工作:

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

        for (int i = 0; i < array.size(); i++) {
            JsonObject object = array.get(i).getAsJsonObject();
            if (extras != null) {
                if (extras.containsKey("attached_files")) {
                    for (int j = 0; j < draft_files.size(); j++) {
                        mNames.clear();
                        mNames.add(draft_files.get(j));
                        adapter.notifyDataSetChanged();

                        //Log.w("MY_TAG", draft_files.get(i));
                        Log.w("MY_TAG", String.valueOf(mNames));
                    }
                    mNames.add(object.get("filename").toString().substring(1, object.get("filename").toString().length() - 1));
                    adapter.notifyDataSetChanged();
                    //Log.w("MY_TAG", Arrays.toString(draft_files));
                    Log.w("MY_TAG", Arrays.toString(new ArrayList[]{mNames}));
                } else {
                    mNames.add(object.get("filename").toString().substring(1, object.get("filename").toString().length() - 1));
                    adapter.notifyDataSetChanged();
                    Log.w("MY_TAG", String.valueOf(mNames));
                }
            }


        }

    }

无需设置两次适配器。删除此行

recyclerView.setAdapter(adapter);


但我仍然没有在我的recyclerview中看到任何项目。@AndrewGoroshko请分享活动的完整代码,直到我能更好地提供帮助
[eZV9f.jpg, index.html]
@Override
    protected Dialog onCreateDialog(int id) {
        Dialog dialog = null;
        switch (id) {
            case CUSTOM_DIALOG_ID:
                dialog = new Dialog(WriteResponseMess.this, android.R.style.Theme_DeviceDefault_Light_NoActionBar_Fullscreen);
                dialog.setContentView(R.layout.dialog_layout);
                dialog.setCanceledOnTouchOutside(true);

                Toolbar toolbar = dialog.findViewById(R.id.toolbar_d);
                toolbar.setTitle("Add a new file.");

                textFolder = dialog.findViewById(R.id.folder);
                buttonUp = dialog.findViewById(R.id.up);
                buttonUp.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View view) {
                        ListDir(curFolder.getParentFile());
                    }
                });


                dialog_ListView = dialog.findViewById(R.id.dialoglist);

                final Dialog finalDialog1 = dialog;
                dialog_ListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                    @RequiresApi(api = Build.VERSION_CODES.O)
                    @Override
                    public void onItemClick(AdapterView<?> adapterView, View view, int position, long l) {
                        File selected = new File(curFolder, fileList.get(position));
                        if (selected.isDirectory()) {
                            ListDir(selected);
                        }
                        if (selected.isFile()) {
                            if (array.size() == 0) {
                                array = uploadFiles(array, selected.getName(), convertFileToString(selected.getPath()));
                                adapter.notifyDataSetChanged();
                                getImages();
                            } else {
                                if (array.toString().contains(selected.getName())) {
                                    Toast.makeText(WriteResponseMess.this, R.string.attaching_message, Toast.LENGTH_SHORT).show();
                                    adapter.notifyDataSetChanged();
                                    getImages();
                                } else {
                                    array = uploadFiles(array, selected.getName(), convertFileToString(selected.getPath()));
                                    adapter.notifyDataSetChanged();
                                    getImages();
                                }

                            }
                            finalDialog1.dismiss();
                            ms.setArray(array);
                        }
                    }
                });

                break;
        }

        return dialog;
    }
private void getImages() {
        mNames.clear();
        adapter.notifyDataSetChanged();

        for (int i = 0; i < array.size(); i++) {
            JsonObject object = array.get(i).getAsJsonObject();
            if (extras != null) {
                if (extras.containsKey("attached_files")) {
                    for (int j = 0; j < draft_files.size(); j++) {
                        mNames.clear();
                        mNames.add(draft_files.get(j));
                        adapter.notifyDataSetChanged();

                        //Log.w("MY_TAG", draft_files.get(i));
                        Log.w("MY_TAG", String.valueOf(mNames));
                    }
                    mNames.add(object.get("filename").toString().substring(1, object.get("filename").toString().length() - 1));
                    adapter.notifyDataSetChanged();
                    //Log.w("MY_TAG", Arrays.toString(draft_files));
                    Log.w("MY_TAG", Arrays.toString(new ArrayList[]{mNames}));
                } else {
                    mNames.add(object.get("filename").toString().substring(1, object.get("filename").toString().length() - 1));
                    adapter.notifyDataSetChanged();
                    Log.w("MY_TAG", String.valueOf(mNames));
                }
            }


        }

    }
recyclerView.setAdapter(adapter);
for (int i = 0; i < draft_files.size(); i++) {
    mNames.addAll(Collections.singleton(draft_files.get(i)));
    adapter.notifyDataSetChanged();
    //recyclerView.setAdapter(adapter); no need
    Log.w("MY_TAG", draft_files.get(i));
    Log.w("MY_TAG", String.valueOf(mNames));
}