使用JSON显示图像 [英] Display image using json

查看:165
本文介绍了使用JSON显示图像的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

有是我想显示图像的gridview的。我想下面使用JSON来diplay在我的gridview的图像。我有ImageAdapter类的ImageAdapter类我有AsynTask那得到JSON,但我不知道如何使用它diplaly在GridView的形象。

我如何使用这个JSON显示图像?

<$p$p><$c$c>{\"countries\":[{\"id\":\"1\",\"first_name\":\"man\",\"last_name\":\"woman\",\"username\":\"man\",\"password\":\"4f70432e636970de9929bcc6f1b72412\",\"email\":\"man@gmail.com\",\"photo\":\"http:\\/\\/vulcan.wr.usgs.gov\\/Imgs\\/Jpg\\/MSH\\/Images\\/MSH64_aerial_view_st_helens_from_NE_09-64_med.jpg\",\"frame\":\"http:\\/\\/easy4us.files.word$p$pss.com\\/2011\\/02\\/frame-1-4.jpg\"}]}

ImageAdapter

 公共类ImageAdapter延伸BaseAdapter {
公共字符串url_select =htt​​p://192.168.10.104/adchara1/;    私人语境mContext;    公共ImageAdapter(上下文C){
        mContext = C;
    }    @覆盖
    公众诠释的getCount(){
        返回0;
    }    @覆盖
    公共对象的getItem(INT为arg0){
        返回null;
    }    @覆盖
    众长getItemId(INT为arg0){
        返回0;
    }    @覆盖
    公共查看getView(INT位置,查看convertView,父母的ViewGroup){        ImageView的ImageView的;
        如果(convertView == NULL){
            ImageView的=新ImageView的(mContext);
            imageView.setLayoutParams(新GridView.LayoutParams(85,85));
            imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
            imageView.setPadding(8,8,8,8);
        }其他{
            ImageView的=(ImageView的)convertView;
        }        //imageView.setImageResource(mthumbIds[position]);        返回ImageView的;
    }    公共类任务扩展的AsyncTask&LT;字符串,字符串,太虚&GT; {
        InputStream为= NULL;
        字符串结果=;        @覆盖
        保护无效doInBackground(字符串... PARAMS){            HttpClient的HttpClient的=新DefaultHttpClient();
            HttpPost httpPost =新HttpPost(url_select);
            ArrayList的&LT;&的NameValuePair GT;参数=新的ArrayList&LT;&的NameValuePair GT;();            尝试{
                httpPost.setEntity(新UrlEn codedFormEntity(参数));
                HTT presponse HTT presponse = httpClient.execute(httpPost);
                HttpEntity httpEntity = HTT presponse.getEntity();
                是= httpEntity.getContent();
            }赶上(例外五){
                 Log.e(log_tag,在HTTP连接错误+ e.toString());
            }            尝试{
                BR的BufferedReader =新的BufferedReader(新的InputStreamReader(是));
                StringBuilder的SB =新的StringBuilder();
                串线=;
                而((行= br.readLine())!= NULL){
                    sb.append(行+\\ n);
                }
                is.close();
                结果= sb.toString();
            }赶上(例外五){
                Log.e(log_tag,错误转换结果+ e.toString());
            }
            返回null;
        }        保护无效onPostExecute(虚空V){
            尝试{
                JSONObject的jObject =新的JSONObject(结果);
                JSONArray jArray = jObject.getJSONArray(国家);
                的for(int i = 0; I&LT; jArray.length();我++){
                    的JSONObject的JSONObject = jArray.getJSONObject(I)
                    串照片= jsonObject.getString(照片);
                }
            }赶上(例外五){
                // TODO:处理异常
            }
        }    }
}

MainActivity

 公共类MainActivity延伸活动{@覆盖
保护无效的onCreate(捆绑savedInstanceState){
    super.onCreate(savedInstanceState);
    的setContentView(R.layout.activity_main);    GridView控件的GridView =(GridView控件)findViewById(R.id.gridView);
    gridview.setAdapter(新ImageAdapter(本));    gridview.setOnItemClickListener(新OnItemClickListener(){        @覆盖
        公共无效onItemClick(适配器视图&LT;&GT;母公司,视图V,INT位置,
                长ID){
            意图I =新意图(MainActivity.this,FullImageActivity.class);
            i.putExtra(的ImagePath,位置);
            startActivity(ⅰ);
            Toast.makeText(MainActivity.this,+(位置+1),Toast.LENGTH_SHORT).show();
        }
    });}
}


解决方案

这个例子可以帮助你结果
它是样本例子之一

 无效MainWindow_Loaded(对象发件人,RoutedEventArgs E)
    {
        HttpWebRequest的myReq =(HttpWebRequest的)WebRequest.Create((链接用于取JSON数据));
        myReq.Method = WebRequestMethods.Http.Get;
        myReq.Accept =apllication / JSON;
        变种响应=(HttpWebResponse)myReq.GetResponse();
        字符串的myString = response.GetResponseHeader(REGISTRATION_STATUS);
        使用(VAR SR =新的StreamReader(response.GetResponseStream()))
        {
            JSON = sr.ReadToEnd();            StreamWriter的SW =新的StreamWriter(@D:\\其他\\ DemoCreatingCustomEvents \\ TextFile1.txt);
            sw.Write(label1.Content.ToString());
            sw.Close();
        }
    }    JSON字符串=;    私人无效的button1_Click(对象发件人,RoutedEventArgs E)
    {        产品分类deserializedProdCategory =新的产品分类();
        MemoryStream的毫秒=新的MemoryStream(Encoding.UTF8.GetBytes(JSON));
        DataContractJsonSerializer SER =新DataContractJsonSerializer(deserializedProdCategory.GetType());        deserializedProdCategory = ser.ReadObject(毫秒),为产品分类;
        ms.Close();
//你可以在这里获取数据,它是在标签所示的
            label1.Content = deserializedProdCategory.ProdCategory [1] .Product_ID +//+ deserializedProdCategory.ProdCategory [1] .Product_Name;
        }
        公共类产品分类
        {
            公开名单&LT;产品与GT; ProdCategory =新的List&LT;产品及GT;();
            公共产品分类()
            {
                ProdCategory =新的List&LT;产品及GT;();
            }
        }
        公共类产品
        {
            公众诠释PRODUCT_ID {搞定;组; }
            公共字符串Product_ code {搞定;组; }
            公共字符串PRODUCT_NAME {搞定;组; }
            公众开放的Image_Small {搞定;组; }
        }

There is a gridview in which I want to display a image. I want to use this json below to diplay image in my gridview. I have an ImageAdapter class in ImageAdapter class I have AsynTask that get json but I don't know how to using it to diplaly image in gridview.

How can I display image using this json?

{"countries":[{"id":"1","first_name":"man","last_name":"woman","username":"man","password":"4f70432e636970de9929bcc6f1b72412","email":"man@gmail.com","photo":"http:\/\/vulcan.wr.usgs.gov\/Imgs\/Jpg\/MSH\/Images\/MSH64_aerial_view_st_helens_from_NE_09-64_med.jpg","frame":"http:\/\/easy4us.files.wordpress.com\/2011\/02\/frame-1-4.jpg"}]}

ImageAdapter

public class ImageAdapter extends BaseAdapter {
public String url_select = "http://192.168.10.104/adchara1/";   

    private Context mContext;

    public ImageAdapter(Context c){
        mContext = c;
    }

    @Override
    public int getCount() {
        return 0;
    }

    @Override
    public Object getItem(int arg0) {
        return null;
    }

    @Override
    public long getItemId(int arg0) {
        return 0;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {

        ImageView imageView;
        if(convertView == null){
            imageView = new ImageView(mContext);
            imageView.setLayoutParams(new GridView.LayoutParams(85,85));
            imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
            imageView.setPadding(8, 8, 8, 8);
        }else{
            imageView = (ImageView) convertView;
        }

        //imageView.setImageResource(mthumbIds[position]);

        return imageView;
    }

    public class Task extends AsyncTask<String, String, Void>{
        InputStream is = null;
        String result = "";

        @Override
        protected Void doInBackground(String... params) {               

            HttpClient httpClient = new DefaultHttpClient();
            HttpPost httpPost = new HttpPost(url_select);
            ArrayList<NameValuePair> param = new ArrayList<NameValuePair>();

            try {
                httpPost.setEntity(new UrlEncodedFormEntity(param));
                HttpResponse httpResponse = httpClient.execute(httpPost);
                HttpEntity httpEntity = httpResponse.getEntity();
                is = httpEntity.getContent();
            } catch (Exception e) {
                 Log.e("log_tag","Error in http connection " + e.toString());
            }

            try {
                BufferedReader br = new BufferedReader(new InputStreamReader(is));
                StringBuilder sb = new StringBuilder();
                String line = "";
                while ((line = br.readLine()) != null) {
                    sb.append(line + "\n");                     
                }
                is.close();
                result = sb.toString();
            } catch (Exception e) {
                Log.e("log_tag", "Error Converting result " + e.toString());
            }
            return null;
        }

        protected void onPostExecute(Void v){
            try {
                JSONObject jObject = new JSONObject(result);
                JSONArray jArray = jObject.getJSONArray("countries");
                for (int i = 0; i < jArray.length(); i++) {
                    JSONObject jsonObject = jArray.getJSONObject(i);
                    String photo = jsonObject.getString("photo");
                }
            } catch (Exception e) {
                // TODO: handle exception
            }
        }

    }   
}

MainActivity

public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    GridView gridview = (GridView) findViewById(R.id.gridView);
    gridview.setAdapter(new ImageAdapter(this));

    gridview.setOnItemClickListener(new OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> parent, View v, int position,
                long id) {
            Intent i = new Intent(MainActivity.this, FullImageActivity.class);
            i.putExtra("imagePath", position);
            startActivity(i);
            Toast.makeText(MainActivity.this, "" + (position + 1), Toast.LENGTH_SHORT).show();
        }
    });

}
}

解决方案

This example may help you
It is one of the sample example

void MainWindow_Loaded(object sender, RoutedEventArgs e)
    {
        HttpWebRequest myReq = (HttpWebRequest)WebRequest.Create("(link for fetching json data)");
        myReq.Method = WebRequestMethods.Http.Get;
        myReq.Accept = "apllication/json";
        var response = (HttpWebResponse)myReq.GetResponse();
        string myString= response.GetResponseHeader("Registration_Status");
        using (var sr = new StreamReader(response.GetResponseStream()))
        {
            json = sr.ReadToEnd();

            StreamWriter sw = new StreamWriter(@"D:\others\DemoCreatingCustomEvents\TextFile1.txt");
            sw.Write(label1.Content.ToString());
            sw.Close();
        }
    }

    string json="";

    private void button1_Click(object sender, RoutedEventArgs e)
    {

        ProductCategory deserializedProdCategory = new ProductCategory();
        MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(json));
        DataContractJsonSerializer ser = new DataContractJsonSerializer(deserializedProdCategory.GetType());

        deserializedProdCategory = ser.ReadObject(ms) as ProductCategory;
        ms.Close();
//you can fetch the data here and it is shown in label
            label1.Content = deserializedProdCategory.ProdCategory[1].Product_ID + "//" + deserializedProdCategory.ProdCategory[1].Product_Name;
        }
        public class ProductCategory
        {
            public List<Product> ProdCategory = new List<Product>();
            public ProductCategory()
            {
                ProdCategory = new List<Product>();
            }
        }


        public class Product
        {
            public int Product_ID { get; set; }
            public string Product_Code { get; set; }
            public string Product_Name { get; set; }
            public Uri Image_Small { get; set; }
        }

这篇关于使用JSON显示图像的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆