我希望用户以任何顺序选择图像、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. 如果你只需要为不同的文件显示不同的图标,那么你可以通过添加一些检查来做到这一点。
添加回答
举报
0/150
提交
取消