我希望用户以任何顺序选择图像、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)制作两种不同的布局?
暮色呼如
相关分类