如何在 RecyclerView 中创建异构布局?

我希望用户以任何顺序选择图像、pdf 和任何其他文档,并将它们放在 recyclerView 中。我对他们每个人都有不同的布局。


到目前为止,我正在从所选图像或 pdf 中获取 Uri 和文件名,并将它们放入列表中。


@Override

        protected void onActivityResult(int requestCode, int resultCode, Intent data) {

            super.onActivityResult(requestCode, resultCode, data);


            if(requestCode == CHOOSE_IMAGE && resultCode == Activity.RESULT_OK){

    if (data.getData()!=null){

                    uriDocument = data.getData();

    }

    String filename = getFilename(uriDocument);

                    fileNameList.add(filename);

                    mAdapter.notifyDataSetChanged();

    }else if (requestCode == PICK_ATTACHMENT && resultCode == RESULT_OK && data != null && data.getData() != null){

                uriDocument= data.getData();

                String filename = getFilename(uriDocument);

                fileNameList.add(filename);

                mAdapter.notifyDataSetChanged();

            }

        } 

我有一个适配器类,它现在只包含一个布局:


@NonNull

    @Override

    public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {

        View view;

        view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_image_message, parent, false);

        return new ViewHolder(view);

    }

这是 getFilename() 方法:


public String getFilename(Uri uri){

        String result =null;

        if (uri.getScheme().equals("content")){

            Cursor cursor = getContentResolver().query(uri,null,null,null,null);

            try{

                if (cursor!=null&&cursor.moveToFirst()){

                    result = cursor.getString(cursor.getColumnIndex(OpenableColumns.DISPLAY_NAME));

                }

            }finally {

                cursor.close();

            }

        }

        if (result == null){

            result = uri.getPath();

            int cut = result.lastIndexOf("/");

            if (cut!=-1){

                result = result.substring(cut+1);

            }

        }

        return result;

    }

如何根据文档的类型(即图像或 pdf)制作两种不同的布局?


慕哥6287543
浏览 196回答 2
2回答

暮色呼如

首先,您必须清楚如何区分不同的文件。即来自文件名或其他字段。现在您可以使用以下两种解决方案中的任何一种: 1. 在 RecyclerView 的适配器中使用多种视图类型。 2. 如果你只需要为不同的文件显示不同的图标,那么你可以通过添加一些检查来做到这一点。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java