使用JSON显示图像 [英] Display image using json
本文介绍了使用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 =http://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屋!
查看全文