有一个gridview,我想在其中显示图像。我想使用下面的json来在我的gridview中显示图像。我在ImageAdapter类中有一个ImageAdapter类我有AsynTask获取json但我不知道如何使用它在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"}]}
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();
}
});
}
}
答案 0 :(得分: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; }
}
答案 1 :(得分: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; }
}
通过使用它,您可以通过查看上面的示例
来修改它