This question is asked many times in stackoverflow but still i didn't got answer, hence i posted this question.
Using parser concept of xml file am reading an xml file in android. In that xml file am declaring both images and texts. Am clear about displaying text from xml file but i tried of displaying image url from xml file into imageview. I referred stackoverflow but still i don't know how to display image from my xml file.
Here is my xml file.
<?xml version="1.0" encoding="UTF-8"?>
<test>
<Category Type="entertainment">
<channel_name>sunmusic</channel_name>
<image_url>http://xxxx/xxxx/Images/news1.png</image_url>
</Category>
<Category Type="sports">
<channel_name>neosports</channel_name>
<image_url>http://xxxx/xxxx/Images/news2.png</image_url>
</Category>
</test>
I loaded all my images in my server and the links are working fine. Please help me resolving this issue.
Customlistview.java
public class CustomListViewAdapter extends ArrayAdapter<TV> {
Activity context;
List<tv> tvlist;
public CustomListViewAdapter(Activity context, List<TV> tvlist) {
super(context, R.layout.list_item, tvlist);
this.context = context;
this.tvlist = tvlist;
}
/*private view holder class*/
private class ViewHolder
{
ImageView imageView;
TextView txtCname;
}
public TV getItem(int position)
{
return tvlist.get(position);
}
public View getView(int position, View convertView, ViewGroup parent)
{
ViewHolder holder;
LayoutInflater inflater = context.getLayoutInflater();
if (convertView == null)
{
convertView = inflater.inflate(R.layout.list_item, null);
holder = new ViewHolder();
holder.txtCname = (TextView) convertView.findViewById(R.id.channel_name);
holder.imageView = (ImageView) convertView.findViewById(R.id.thumbnail);
convertView.setTag(holder);
}
else
{
holder = (ViewHolder) convertView.getTag();
}
TV laptop = (TV) getItem(position);
holder.txtCname.setText(laptop.getChannelName());
holder.imageView.setImageBitmap(laptop.getImageBitmap());
return convertView;
}
}
tv.java
public class TV
{
private String channel_name;
private String imageURL;
private Bitmap imageBitmap;
private String type;
public String getChannelName()
{
return channel_name;
}
public void setChannelName(String type)
{
this.type = type;
}
public String getType()
{
return type;
}
public void setType(String channel_name)
{
this.channel_name = channel_name;
}
public String getImageURL()
{
return imageURL;
}
public void setImageURL(String imageURL)
{
this.imageURL = imageURL;
}
public Bitmap getImageBitmap()
{
return imageBitmap;
}
public void setImageBitmap(Bitmap imageBitmap)
{
this.imageBitmap = imageBitmap;
}
}
mainactivity.java
public class MainActivity extends Activity implements OnClickListener, OnItemClickListener
{
Button button;
ListView listView;
List<TV> tvlist;
CustomListViewAdapter listViewAdapter;
static final String URL = "http://xxxx/xxxx/Images/channeltest.xml";
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
findViewsById();
button.setOnClickListener(this);
listView.setOnItemClickListener(this);
}
private void findViewsById()
{
button = (Button) findViewById(R.id.button);
listView = (ListView) findViewById(R.id.laptopList);
}
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id)
{
}
@Override
public void onClick(View view)
{
GetXMLTask task = new GetXMLTask(this);
task.execute(new String[] { URL });
}
private class GetXMLTask extends AsyncTask<String, Void, List<TV>>
{
private Activity context;
public GetXMLTask(Activity context)
{
this.context = context;
}
@Override
protected void onPostExecute(List<TV> tvlist)
{
listViewAdapter = new CustomListViewAdapter(context, tvlist);
listView.setAdapter(listViewAdapter);
}
private String getXmlFromUrl(String urlString)
{
StringBuffer output = new StringBuffer("");
try
{
InputStream stream = null;
URL url = new URL(urlString);
URLConnection connection = url.openConnection();
HttpURLConnection httpConnection = (HttpURLConnection) connection;
httpConnection.setRequestMethod("GET");
httpConnection.connect();
if (httpConnection.getResponseCode() == HttpURLConnection.HTTP_OK)
{
stream = httpConnection.getInputStream();
BufferedReader buffer = new BufferedReader(new InputStreamReader(stream));
String s = "";
while ((s = buffer.readLine()) != null)
output.append(s);
}
}
catch (Exception ex)
{
ex.printStackTrace();
}
return output.toString();
}
@Override
protected List<TV> doInBackground(String... urls)
{
List<TV> tvlist = null;
String xml = null;
for (String url : urls)
{
xml = getXmlFromUrl(url);
InputStream stream = new ByteArrayInputStream(xml.getBytes());
tvlist = MsenseParsar.parse(stream);
for (TV tv : tvlist)
{
String imageURL = tv.getImageURL();
Bitmap bitmap = null;
BitmapFactory.Options bmOptions = new BitmapFactory.Options();
bmOptions.inSampleSize = 1;
try
{
bitmap = BitmapFactory.decodeStream(new URL(imageURL).openStream(), null, bmOptions);
}
catch (MalformedURLException e)
{
e.printStackTrace();
}
catch (IOException e)
{
e.printStackTrace();
}
tv.setImageBitmap(bitmap);
}
}
return tvlist;
}
}
}