为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕哥6287543 2021-10-06 10:46:13
我希望用户以任何顺序选择图像、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)制作两种不同的布局?
查看完整描述

2 回答

?
暮色呼如

TA贡献1853条经验 获得超9个赞

首先,您必须清楚如何区分不同的文件。即来自文件名或其他字段。

现在您可以使用以下两种解决方案中的任何一种: 1. 在 RecyclerView 的适配器中使用多种视图类型。 2. 如果你只需要为不同的文件显示不同的图标,那么你可以通过添加一些检查来做到这一点。


查看完整回答
反对 回复 2021-10-06
  • 2 回答
  • 0 关注
  • 195 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信