0

有一个网格视图,我想在其中显示图像。我想使用下面的这个 json 在我的 gridview 中显示图像。我在 ImageAdapter 类中有一个 ImageAdapter 类我有获取 json 的 AsynTask,但我不知道如何使用它在 gridview 中显示图像。

如何使用此 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"}]}

图像适配器

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
            }
        }

    }   
}

主要活动

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();
        }
    });

}
}
4

2 回答 2

0

代码的实体层

public class Country
{
    public string id { get; set; }
    public string first_name { get; set; }
    public string last_name { get; set; }
    public string username { get; set; }
    public string password { get; set; }
    public string email { get; set; }
    public string photo { get; set; }
    public string frame { get; set; }
}

public class MyData
{
    public List<Country> countries { get; set; }
}

通过使用它,您可以通过查看上面的示例来修改它

于 2012-11-19T07:10:17.997 回答
0

这个例子可以帮助你
它是示例示例之一

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; }
        }
于 2012-11-19T04:52:34.117 回答