2013-07-29 28 views
0

這是我的JSON文件和代碼,我想在我的ImageView和文本視圖 如何設置JSON valuesin我imageciew和TextView的打印3 JSON值?請幫助我在我的代碼有三個屬性的名稱和網址我怎麼設置這對樹imageview和textview?如何在imageview和textview中顯示json值?

  { 
"worldpopulation": [ 
{ 
"rank":1, 
"name": "BREAKFAST", 
"url": "http://niel986.files.wordpress.com/2012/07/fast-food.jpg" 
}, 
{ 
"rank":2, 
"name": "LUNCH ", 
"url": "http://www.bubblews.com/assets/images/news/1107772406_1370520219.gif" 
}, 
{ 
"rank":3, 
"name": "SUPPER", 
"url": "http://2.bp.blogspot.com/_JU_j7jj5TjU/TSBQKRukf1I/AAAAAAAAAs8/X1w5_z6pjwQ 
    /s1600/chicken-biryani.jpg" 
} 

] 
} 

代碼:

ImageView img1 = (ImageView) findViewById(R.id.img1); 


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


     ImageView img2 = (ImageView) findViewById(R.id.img2); 


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


     ImageView img3 = (ImageView) findViewById(R.id.img3); 


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


    MenuSelect = Utils.MenuSelect; 

    try { 

     HttpClient client = new DefaultHttpClient(); 
     HttpConnectionParams.setConnectionTimeout(client.getParams(), 
15000); 
     HttpConnectionParams.setSoTimeout(client.getParams(), 15000); 
     HttpUriRequest request = new HttpGet(MenuSelect); 
     HttpResponse response = client.execute(request); 
     InputStream atomInputStream = response.getEntity().getContent(); 
     BufferedReader in = new BufferedReader(new 
    InputStreamReader(atomInputStream)); 

     String line; 
     String str = ""; 
     while ((line = in.readLine()) != null){ 
      str += line; 
     } 


      JSONObject json = new JSONObject(str); 
      JSONArray data = json.getJSONArray("worldpopulation"); 


     JSONObject e = data.getJSONObject(i); 

      String Name=e.getString("name"); 
      String url2=e.getString("url"); 
      txt1.setText(Name); 
      Bitmap bitmap =  
     BitmapFactory.decodeStream((InputStream)new URL(url2).getContent()); 
     img1.setImageBitmap(bitmap); 



    } catch (MalformedURLException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
    // IOConnect = 1; 
     e.printStackTrace(); 
    } catch (JSONException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
+0

如何解析JSON值???請幫助我?????我的ImageView和TextView中 – user2589245

+0

伊萬TTO秀「名稱」和「URL」 U [R而獲得的編碼什麼問題? – KOTIOS

+0

JSONObject e = data.getJSONObject(i);我可以知道B的決心 – user2589245

回答

1
1) MainActivity 

    public class MainActivity extends Activity { 


     LazyAdapter adapter; 
     ArrayList<AtmData> mAtmData; 
     AtmData POIitem1; 
     ListView list; 
     Button btn; 
     @Override 
     public void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.activity_main); 
      list = (ListView)findViewById(R.id.list); 
      btn = (Button)findViewById(R.id.buttt); 

      btn.setOnClickListener(new OnClickListener() { 

       public void onClick(View v) { 
        // TODO Auto-generated method stub 
        Intent ii = new Intent(MainActivity.this,GoogleMap.class); 
        startActivity(ii); 
       } 
      }); 

      POIitem1 = new AtmData(); 

      Thread mUpdateThread1 = new Thread() { 
       public void run() { 

        Connnn _con = new Connnn(); 

        try { 

         mAtmData = _con.getAtmData(
           MainActivity.this, 
           "https://maps.googleapis.com/maps/api/place/search/json?location=30.7046486,76.71787259999999&radius=1000&types=food&sensor=false&key=AIzaSyAx8BKq8WTUzke6jnL1n4TqSvS5xHH5HFE"); 
         Log.d("", "url" + mAtmData); 
        // Log.d("", "url" 
         //  + "https://maps.googleapis.com/maps/api/place/search/json?location=30.7046486,76.71787259999999&radius=1000&types=atm&sensor=false&key=AIzaSyAx8BKq8WTUzke6jnL1n4TqSvS5xHH5HFE"); 
        } catch (ClientProtocolException e) { 
         // TODO Auto-generated catch block 
         e.printStackTrace(); 
        } catch (IOException e) { 
         // TODO Auto-generated catch block 
         e.printStackTrace(); 
        } 
        // Log.d("sizeeeeeeeeeeeeeeeeeeeee",""+mLocationInfo.size()); 
        MainActivity.this.handle.sendEmptyMessage(1); 

       }; 
      }; 
      mUpdateThread1.start(); 
     } 

     Handler handle = new Handler(){ 

      public void handleMessage(android.os.Message msg) { 
       switch(msg.what) 
       { 
       case 1: 
        Log.d("murlllllllll","murllllllllllll"+ mAtmData); 
        for(int i=0;i<mAtmData.size();i++){ 
         Log.d("murlllllllll","murllllllllllll"+ mAtmData.get(i).mlag); 
         Log.d("lnggggggggg","lnnnnnnnnnnnnggggg"+mAtmData.get(i).mlat); 
         Log.d("lconnnnnnn","iconnnnnnnnnnnnnnnnnnnnnn"+mAtmData.get(i).micon); 

         } 
        adapter = new LazyAdapter(MainActivity.this, mAtmData); 
         list.setAdapter(adapter); 
         Log.d("lsit","listttttttttt"+list); 

      }; 

     }; 



     }; 


     } 

2)LAzy Class.. 

public class LazyAdapter extends BaseAdapter { 


    private static LayoutInflater inflater=null; 
    MainActivity mainActivity; 
    ArrayList<AtmData> data; 
    ImageLoader imageLoader; 
    public LazyAdapter(MainActivity a, ArrayList<AtmData> data) { 
     // TODO Auto-generated constructor stub 

     mainActivity = a; 
      this.data=data; 
      inflater = (LayoutInflater)mainActivity.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
      imageLoader=new ImageLoader(mainActivity.getApplicationContext()); 
    } 

    @Override 
    public int getCount() { 
     // TODO Auto-generated method stub 
     return data.size(); 
    } 

    @Override 
    public Object getItem(int position) { 
     // TODO Auto-generated method stub 
     return position; 
    } 

    @Override 
    public long getItemId(int position) { 
     // TODO Auto-generated method stub 
     return position; 
    } 

    class AtmData2{ 
     public TextView title1,artist,adress; 
     public ImageView _image; 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     // TODO Auto-generated method stub 
     AtmData2 mAtmData2; 
     View vi=convertView; 
     if(convertView==null) 
     { 
      mAtmData2=new AtmData2(); 
      convertView = inflater.inflate(R.layout.list_row, null); 

      mAtmData2.title1 = (TextView) convertView.findViewById(R.id.title); 
     mAtmData2._image = (ImageView) convertView.findViewById(R.id.imageView1nnnnnnnnnnnn); 

      mAtmData2.artist = (TextView) convertView.findViewById(R.id.artist); // artist name 
      mAtmData2.adress = (TextView) convertView.findViewById(R.id.duration); // duration 

      convertView.setTag(mAtmData2); 
    } else { 
     mAtmData2 = (AtmData2)convertView.getTag(); 
    } 
     mAtmData2.title1.setText(data.get(position).mname); 
     mAtmData2.artist.setText(data.get(position).mtypes); 
     String _imgurl = this.data.get(position).micon.replaceAll(" ","%20"); 
     mAtmData2.adress.setText(data.get(position).mvicinity); 


     mAtmData2._image.setTag(_imgurl); 
     imageLoader.DisplayImage(_imgurl,mainActivity, mAtmData2._image); 


     return convertView; 
    } 






    } 


3) ImageLoader class; 

public class ImageLoader { 

    MemoryCache memoryCache=new MemoryCache(); 
    FileCache fileCache; 
    private Map<ImageView, String> imageViews=Collections.synchronizedMap(new WeakHashMap<ImageView, String>()); 
    ExecutorService executorService; 

    public ImageLoader(Context context){ 
     fileCache=new FileCache(context); 
     executorService=Executors.newFixedThreadPool(5); 
    } 

    final int stub_id = R.drawable.no_image; 
    public void DisplayImage(String url, ImageView imageView) 
    { 
     imageViews.put(imageView, url); 
     Bitmap bitmap=memoryCache.get(url); 
     if(bitmap!=null) 
      imageView.setImageBitmap(bitmap); 
     else 
     { 
      queuePhoto(url, imageView); 
      imageView.setImageResource(stub_id); 
     } 
    } 

    private void queuePhoto(String url, ImageView imageView) 
    { 
     PhotoToLoad p=new PhotoToLoad(url, imageView); 
     executorService.submit(new PhotosLoader(p)); 
    } 

    private Bitmap getBitmap(String url) 
    { 
     File f=fileCache.getFile(url); 

     //from SD cache 
     Bitmap b = decodeFile(f); 
     if(b!=null) 
      return b; 

     //from web 
     try { 
      Bitmap bitmap=null; 
      URL imageUrl = new URL(url); 
      HttpURLConnection conn = (HttpURLConnection)imageUrl.openConnection(); 
      conn.setConnectTimeout(30000); 
      conn.setReadTimeout(30000); 
      conn.setInstanceFollowRedirects(true); 
      InputStream is=conn.getInputStream(); 
      OutputStream os = new FileOutputStream(f); 
      Utils.CopyStream(is, os); 
      os.close(); 
      bitmap = decodeFile(f); 
      return bitmap; 
     } catch (Exception ex){ 
      ex.printStackTrace(); 
      return null; 
     } 
    } 

    //decodes image and scales it to reduce memory consumption 
    private Bitmap decodeFile(File f){ 
     try { 
      //decode image size 
      BitmapFactory.Options o = new BitmapFactory.Options(); 
      o.inJustDecodeBounds = true; 
      BitmapFactory.decodeStream(new FileInputStream(f),null,o); 

      //Find the correct scale value. It should be the power of 2. 
      final int REQUIRED_SIZE=70; 
      int width_tmp=o.outWidth, height_tmp=o.outHeight; 
      int scale=1; 
      while(true){ 
       if(width_tmp/2<REQUIRED_SIZE || height_tmp/2<REQUIRED_SIZE) 
        break; 
       width_tmp/=2; 
       height_tmp/=2; 
       scale*=2; 
      } 

      //decode with inSampleSize 
      BitmapFactory.Options o2 = new BitmapFactory.Options(); 
      o2.inSampleSize=scale; 
      return BitmapFactory.decodeStream(new FileInputStream(f), null, o2); 
     } catch (FileNotFoundException e) {} 
     return null; 
    } 

    //Task for the queue 
    private class PhotoToLoad 
    { 
     public String url; 
     public ImageView imageView; 
     public PhotoToLoad(String u, ImageView i){ 
      url=u; 
      imageView=i; 
     } 
    } 

    class PhotosLoader implements Runnable { 
     PhotoToLoad photoToLoad; 
     PhotosLoader(PhotoToLoad photoToLoad){ 
      this.photoToLoad=photoToLoad; 
     } 

     @Override 
     public void run() { 
      if(imageViewReused(photoToLoad)) 
       return; 
      Bitmap bmp=getBitmap(photoToLoad.url); 
      memoryCache.put(photoToLoad.url, bmp); 
      if(imageViewReused(photoToLoad)) 
       return; 
      BitmapDisplayer bd=new BitmapDisplayer(bmp, photoToLoad); 
      Activity a=(Activity)photoToLoad.imageView.getContext(); 
      a.runOnUiThread(bd); 
     } 
    } 

    boolean imageViewReused(PhotoToLoad photoToLoad){ 
     String tag=imageViews.get(photoToLoad.imageView); 
     if(tag==null || !tag.equals(photoToLoad.url)) 
      return true; 
     return false; 
    } 

    //Used to display bitmap in the UI thread 
    class BitmapDisplayer implements Runnable 
    { 
     Bitmap bitmap; 
     PhotoToLoad photoToLoad; 
     public BitmapDisplayer(Bitmap b, PhotoToLoad p){bitmap=b;photoToLoad=p;} 
     public void run() 
     { 
      if(imageViewReused(photoToLoad)) 
       return; 
      if(bitmap!=null) 
       photoToLoad.imageView.setImageBitmap(bitmap); 
      else 
       photoToLoad.imageView.setImageResource(stub_id); 
     } 
    } 

    public void clearCache() { 
     memoryCache.clear(); 
     fileCache.clear(); 
    } 

    public void DisplayImage(String _imgurl, MainActivity mainActivity, 
      Object _image) { 
     // TODO Auto-generated method stub 

    } 

} 

試試這個也可能是幫助u..it爲我工作。

+0

我知道如何解碼URL到ImageView的我只想TPØ解析正確imaeview和JSON文件的TextView ??? – user2589245

+0

我josn文件中,有三點六九1,2,3和三個名稱和三個URL我想在三個TextView中和三個URL在三個imageview的我怎麼會做,打印3名??? – user2589245

+0

它是完整的代碼,其中我實現了文本和imageview.so仔細閱讀我嘗試瞭解代碼 –