gpt4 book ai didi

android - 使用drawable解析本地xml android

转载 作者:太空宇宙 更新时间:2023-11-03 10:20:02 25 4
gpt4 key购买 nike

我想从 android 的 assets 文件夹中解析一个本地 XML 文件,我找到了一个很好的教程:http://theopentutorials.com/tutorials/android/xml/android-simple-xmlpullparser-tutorial/

一切都很好,我转换了教程代码以获得一个漂亮的 ListView ,每行项目都有一个图像、标题和描述,但是有一个大问题:

如何解析本地 XML 文件中的可绘制图像以加载图像?所有图像都存储在 drawable 文件夹中。

示例 XML:

<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<cities>
<city>
<cid>1</cid>
<name>Passau</name>
<image>@drawable/passau</image>
<desc>Lorem ipsum</desc>
</city>
<city>
<cid>2</cid>
<name>Bamberg</name>
<image>@drawable/bamberg</image>
<desc>Lorem ipsum</desc>
</city>
<city>
<cid>3</cid>
<name>Augsburg</name>
<image>@drawable/augsburg</image>
<desc>Lorem ipsum</desc>
</city>
</cities>

适配器示例:

import android.app.Activity;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.TextView;

import java.util.List;

/**
* Created by Ben on 29.07.2014.
*/
public class ListViewAdapter extends ArrayAdapter<RowItem> {
Context context;

public ListViewAdapter(Context context, int resourceId,
List<RowItem> items) {
super(context, resourceId, items);
this.context = context;
}

/*private view holder class*/
private class ViewHolder {
ImageView imageView;
TextView txtTitle;
TextView txtDesc;
}

public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder = null;
RowItem rowItem = getItem(position);

LayoutInflater mInflater = (LayoutInflater) context
.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
if (convertView == null) {
convertView = mInflater.inflate(R.layout.row_item, null);
holder = new ViewHolder();
holder.txtDesc = (TextView) convertView.findViewById(R.id.Desc);
holder.txtTitle = (TextView) convertView.findViewById(R.id.Titel);
holder.imageView = (ImageView) convertView.findViewById(R.id.Bild);
convertView.setTag(holder);
} else
holder = (ViewHolder) convertView.getTag();

holder.txtDesc.setText(rowItem.getDesc());
holder.txtTitle.setText(rowItem.getTitle());
holder.imageView.setImageResource(rowItem.getImageDrawable());

return convertView;
}
}

最佳答案

将您的资源名称添加到 xml 中并试试这个: How do I get the resource id of an image if I know its name?要从您从 xml 获得的资源名称中获取资源 ID。就这些。

基于他的适配器,这里是要更改的行:

holder.imageView.setImageResource(getContext().getResources().getIdentifier(rowItem.getImage(), "drawable", getContext().getPackageName()));

当您查找时:http://developer.android.com/reference/android/widget/ArrayAdapter.html它获取要在其中工作的上下文并提供方法“getContext”,您可以访问 getResources()。

您的 RowItem 已经包含带有图像名称的字符串。您必须删除 xml 中的“@drawable/”前缀。

关于android - 使用drawable解析本地xml android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25015914/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com