当前位置: 动力学知识库 > 问答 > 编程问答 >

how to add imageview in listview in Android

问题描述:

i want display image from json url in listview.
here is my code:


activity_main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"

xmlns:tools="http://schemas.android.com/tools"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:paddingBottom="@dimen/activity_vertical_margin"

android:paddingLeft="@dimen/activity_horizontal_margin"

android:paddingRight="@dimen/activity_horizontal_margin"

android:paddingTop="@dimen/activity_vertical_margin"

tools:context=".MainActivity" >

<ListView

android:id="@+id/list"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:layout_above="@+id/getdata" />

<Button

android:id="@+id/getdata"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_alignParentBottom="true"

android:layout_centerHorizontal="true"

android:layout_marginBottom="23dp"

android:text="Get Data" />

</RelativeLayout><br>


list_v.xml

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:orientation="vertical" >

<TextView

android:id="@+id/feed"

android:layout_width="match_parent"

android:layout_height="wrap_content" />

<TextView

android:id="@+id/tags"

android:layout_width="match_parent"

android:layout_height="wrap_content" />

<ImageView

android:id="@+id/img"

android:layout_width="match_parent"

android:layout_height="wrap_content" />

</LinearLayout><br>


MainActivity.java

package learn2crack.listview;

import java.util.ArrayList;

import java.util.HashMap;

import org.json.JSONArray;

import org.json.JSONException;

import org.json.JSONObject;

import android.app.Activity;

import android.os.AsyncTask;

import android.os.Bundle;

import android.view.View;

import android.widget.AdapterView;

import android.widget.Button;

import android.widget.ImageView;

import android.widget.ListAdapter;

import android.widget.ListView;

import android.widget.SimpleAdapter;

import android.widget.TextView;

import android.widget.Toast;

import learn2crack.listview.library.JSONParser;

public class MainActivity extends Activity {

ListView list;

TextView feed_id;

TextView tags;

ImageView thumbnail;

Button Btngetdata;

ArrayList<HashMap<String, String>> snowlist = new ArrayList<HashMap<String, String>>();

// URL to get JSON Array

private static String url = "http://instaapi.social-fair.com.208-91-199-15.md-plesk-web1.webhostbox.net/api.php?type=tag&tag=snow";

// JSON Node Names

private static final String TAG_main = "main";

private static final String TAG_feed = "feed_id";

private static final String TAG_tags = "tags";

private static final String TAG_thumb = "thumbnail";

JSONArray android = null;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

snowlist = new ArrayList<HashMap<String, String>>();

Btngetdata = (Button) findViewById(R.id.getdata);

Btngetdata.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View view) {

new JSONParse().execute();

}

});

}

private class JSONParse extends AsyncTask<String, String, JSONObject> {

@Override

protected void onPreExecute() {

super.onPreExecute();

feed_id = (TextView) findViewById(R.id.feed);

tags = (TextView) findViewById(R.id.tags);

thumbnail = (ImageView) findViewById(R.id.img);

}

@Override

protected JSONObject doInBackground(String... args) {

JSONParser jParser = new JSONParser();

// Getting JSON from URL

JSONObject json = jParser.getJSONFromUrl(url);

return json;

}

@Override

protected void onPostExecute(JSONObject json) {

try {

// Getting JSON Array from URL

android = json.getJSONArray(TAG_main);

for (int i = 0; i < android.length(); i++) {

JSONObject c = android.getJSONObject(i);

// Storing JSON item in a Variable

String feed = c.getString(TAG_feed);

String tags = c.getString(TAG_tags);

String thumb = c.getString(TAG_thumb);

// Adding value HashMap key => value

HashMap<String, String> map = new HashMap<String, String>();

map.put(TAG_feed, feed);

map.put(TAG_tags, tags);

map.put(TAG_thumb, thumb);

snowlist.add(map);

list = (ListView) findViewById(R.id.list);

ListAdapter adapter = new SimpleAdapter(MainActivity.this,

snowlist, R.layout.list_v, new String[] { TAG_feed,

TAG_tags, TAG_thumb }, new int[] {

R.id.feed, R.id.tags, R.id.img });

list.setAdapter(adapter);

list.setOnItemClickListener(new AdapterView.OnItemClickListener() {

@Override

public void onItemClick(AdapterView<?> parent,

View view, int position, long id) {

Toast.makeText(

MainActivity.this,

"You Clicked at "

+ snowlist.get(+position).get(

"tags"), Toast.LENGTH_SHORT)

.show();

}

});

}

} catch (JSONException e) {

e.printStackTrace();

}

}

}

}



JSonParser.java

package learn2crack.listview.library;

import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStream;

import java.io.InputStreamReader;

import java.io.UnsupportedEncodingException;

import org.apache.http.HttpEntity;

import org.apache.http.HttpResponse;

import org.apache.http.client.ClientProtocolException;

import org.apache.http.client.methods.HttpPost;

import org.apache.http.impl.client.DefaultHttpClient;

import org.json.JSONException;

import org.json.JSONObject;

import android.util.Log;

public class JSONParser {

static InputStream is = null;

static JSONObject jObj = null;

static String json = "";

// constructor

public JSONParser() {

}

public JSONObject getJSONFromUrl(String url) {

// Making HTTP request

try {

// defaultHttpClient

DefaultHttpClient httpClient = new DefaultHttpClient();

HttpPost httpPost = new HttpPost(url);

HttpResponse httpResponse = httpClient.execute(httpPost);

HttpEntity httpEntity = httpResponse.getEntity();

is = httpEntity.getContent();

} catch (UnsupportedEncodingException e) {

e.printStackTrace();

} catch (ClientProtocolException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}

try {

BufferedReader reader = new BufferedReader(new InputStreamReader(

is, "iso-8859-1"), 8);

StringBuilder sb = new StringBuilder();

String line = null;

while ((line = reader.readLine()) != null) {

sb.append(line + "\n");

}

is.close();

json = sb.toString();

} catch (Exception e) {

Log.e("Buffer Error", "Error converting result " + e.toString());

}

// try parse the string to a JSON object

try {

jObj = new JSONObject(json);

} catch (JSONException e) {

Log.e("JSON Parser", "Error parsing data " + e.toString());

}

// return JSON String

return jObj;

}

}



it display text from json url but not display image

please help me how can i display image in listview?

Thank you...

网友答案:

Your ImageView is being set with a string containing a url. You have to get that image from the Internet, you can use use this class that Google provides ImageDownloadTask

And you can call it on your adapter when you are setting your image, like this:

new ImageDownloaderTask(imgLocal,position,this).execute(objectPlace.objectInfo.image);
分享给朋友:
您可能感兴趣的文章:
随机阅读: