I would like to parse a local XML file from the assets folder in android and I have found a nice tutorial: http://theopentutorials.com/tutorials/android/xml/android-simple-xmlpullparser-tutorial/
All works great, I´ve converted the tutorial code to get a nice listview with an image, title and description per row item, but there´s one big problem:
How can I parse a drawable image within a local XML file to get the image loading? All images are stored at drawable folder.
Example 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>
Adapter Example:
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;
}
}