将包含 uri 路径的字符串转换为 arraylist<uri>
Convert a string which contains uri paths to a arraylist<uri>
我正在创建一个记事本程序,用户可以在其中将图像添加到他的笔记中。当他创建一个新笔记并选择一些图像时,它们的路径(uri)存储在一个数组列表中,该数组列表被转换为 xml 标签(字符串类型转换)。当用户想要打开创建的笔记时,之前选择的图像将显示在网格视图中。但是,当我尝试将字符串标记从 xml 文件转换为数组列表以便图像适配器可以将它们放入网格视图时,我收到有关转换类型的错误。
编辑 我得到的错误是 -java.lang.String cannot be cast to android.net.Uri-
适配器是这个
`private Context ctx;
private int pos;
private LayoutInflater inflater;
private ImageView ivGallery;
ArrayList<Uri> mArrayUri;
public GalleryAdapter(Context ctx, ArrayList<Uri> mArrayUri) {
this.ctx = ctx;
this.mArrayUri = mArrayUri;
}
@Override
public int getCount() {
return mArrayUri.size();
}
@Override
public Object getItem(int position) {
return mArrayUri.get(position);
}
@Override
public long getItemId(int position) {
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
pos = position;
inflater = (LayoutInflater) ctx
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View itemView = inflater.inflate(R.layout.gv_item, parent, false);
ivGallery = (ImageView) itemView.findViewById(R.id.ivGallery);
ivGallery.setImageURI(mArrayUri.get(position));
return itemView;
}`
我尝试将它们转换为数组并在网格视图中显示它们的方式是这样
` String Paths = userData.get(1);
ArrayList mArrayUri = new ArrayList<>(Arrays.asList(Paths.split(",")));
galleryAdapter = new GalleryAdapter(getApplicationContext(),mArrayUri);
gvGallery.setAdapter(galleryAdapter);
gvGallery.setVerticalSpacing(gvGallery.getHorizontalSpacing());
ViewGroup.MarginLayoutParams mlp = (ViewGroup.MarginLayoutParams) gvGallery
.getLayoutParams();
mlp.setMargins(0, gvGallery.getHorizontalSpacing(), 0, 0);
`
xml创建代码是这个
` xmlSerializer.startDocument("UTF-8", true);
xmlSerializer.startTag(null, "userData");
xmlSerializer.startTag(null,"Text");
xmlSerializer.text(NoteText);
xmlSerializer.endTag(null, "Text");
xmlSerializer.startTag(null,"Image Paths");
xmlSerializer.text(String.valueOf(Gallery.ImagePaths));
xmlSerializer.endTag(null,"Image Paths" );
xmlSerializer.endTag(null, "userData");
xmlSerializer.endDocument();`
你的代码很不错,只是让你的数组列表类型为字符串,然后取 uri 的字符串值。
在 .text(String.valueof(Imagepath))
中使用 Uri.toString
而不是 String valueof
示例:
Uri uri;
String myUriString;
myUriString = uri.toString();
我正在创建一个记事本程序,用户可以在其中将图像添加到他的笔记中。当他创建一个新笔记并选择一些图像时,它们的路径(uri)存储在一个数组列表中,该数组列表被转换为 xml 标签(字符串类型转换)。当用户想要打开创建的笔记时,之前选择的图像将显示在网格视图中。但是,当我尝试将字符串标记从 xml 文件转换为数组列表以便图像适配器可以将它们放入网格视图时,我收到有关转换类型的错误。 编辑 我得到的错误是 -java.lang.String cannot be cast to android.net.Uri-
适配器是这个
`private Context ctx;
private int pos;
private LayoutInflater inflater;
private ImageView ivGallery;
ArrayList<Uri> mArrayUri;
public GalleryAdapter(Context ctx, ArrayList<Uri> mArrayUri) {
this.ctx = ctx;
this.mArrayUri = mArrayUri;
}
@Override
public int getCount() {
return mArrayUri.size();
}
@Override
public Object getItem(int position) {
return mArrayUri.get(position);
}
@Override
public long getItemId(int position) {
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
pos = position;
inflater = (LayoutInflater) ctx
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View itemView = inflater.inflate(R.layout.gv_item, parent, false);
ivGallery = (ImageView) itemView.findViewById(R.id.ivGallery);
ivGallery.setImageURI(mArrayUri.get(position));
return itemView;
}`
我尝试将它们转换为数组并在网格视图中显示它们的方式是这样
` String Paths = userData.get(1);
ArrayList mArrayUri = new ArrayList<>(Arrays.asList(Paths.split(",")));
galleryAdapter = new GalleryAdapter(getApplicationContext(),mArrayUri);
gvGallery.setAdapter(galleryAdapter);
gvGallery.setVerticalSpacing(gvGallery.getHorizontalSpacing());
ViewGroup.MarginLayoutParams mlp = (ViewGroup.MarginLayoutParams) gvGallery
.getLayoutParams();
mlp.setMargins(0, gvGallery.getHorizontalSpacing(), 0, 0);
`
xml创建代码是这个
` xmlSerializer.startDocument("UTF-8", true);
xmlSerializer.startTag(null, "userData");
xmlSerializer.startTag(null,"Text");
xmlSerializer.text(NoteText);
xmlSerializer.endTag(null, "Text");
xmlSerializer.startTag(null,"Image Paths");
xmlSerializer.text(String.valueOf(Gallery.ImagePaths));
xmlSerializer.endTag(null,"Image Paths" );
xmlSerializer.endTag(null, "userData");
xmlSerializer.endDocument();`
你的代码很不错,只是让你的数组列表类型为字符串,然后取 uri 的字符串值。
在 .text(String.valueof(Imagepath))
中使用 Uri.toString
而不是 String valueof
示例:
Uri uri;
String myUriString;
myUriString = uri.toString();