2017-12-11 4 views
1

Main Activity:フェッチすることができない画像

public class MainActivity extends AppCompatActivity { 

      // ImageView iv; 
      public static StringBuffer finalparsedData; 
      public static GridView myGrid; 
      private static final String TAG = MainActivity.class.getSimpleName(); 
      ArrayList<String> values = null; 

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

       myGrid=(GridView)findViewById(R.id.grid_view); 

       Button btnHit = (Button) findViewById(R.id.btnHit); 
       btnHit.setOnClickListener(new View.OnClickListener(){ 

        @Override 
        public void onClick(View v) {  
         new JSONTask().execute("https://api.flickr.com/services/rest/?method=flickr.photos.getRecent&" + 
           "api_key=46e71c8d2b35ba8c9c333a462ec8aea7&per_page=3&format=json&nojsoncallback=10"); 
        } 
       }); 
       values = new ArrayList<>(); 

      } 
     /*static boolean isAirplaneModeOn(Context context) { 
      ContentResolver contentResolver = context.getContentResolver(); 
      return Settings.System.getInt(contentResolver, AIRPLANE_MODE_ON, 0) != 0; 
     }*/ 

      public class JSONTask extends AsyncTask<String, Void, String> { 

       String photoid; 
       int farm; 
       String server; 
       String secret; 

       @Override 
       protected String doInBackground(String... params) { 
        HttpURLConnection connection = null; 
        BufferedReader reader = null; 


        StringBuffer buffer = null; 
        JSONArray parentarray = null; 

        try { 
         URL url = new URL(params[0]); 
         connection = (HttpURLConnection) url.openConnection(); 
         connection.connect(); 

         InputStream stream = connection.getInputStream(); 
         reader = new BufferedReader(new InputStreamReader(stream)); 
         buffer = new StringBuffer(); 
         String line = ""; 
         while ((line = reader.readLine()) != null) { 
          buffer.append(line); 

         } 
         String finalJson = buffer.toString(); 

         JSONObject parentObject = new JSONObject(finalJson); 
         //JSONObject initialObject = new JSONObject("photos"); 
         JSONObject initialObject = parentObject.getJSONObject("photos"); 
         parentarray = initialObject.getJSONArray("photo"); 
         finalparsedData = new StringBuffer(); 

         for (int i = 0; i < parentarray.length(); i++) { 

          JSONObject finalObject = parentarray.getJSONObject(i); 
          photoid = finalObject.optString("id"); 
          farm = finalObject.optInt("farm"); 
          server = finalObject.optString("server"); 
          secret = finalObject.optString("secret"); 
          finalparsedData.append("https://farm" + farm + ".staticflickr.com/" + server + "/" + photoid+ "_" + secret + ".jpg" +"\n\n"); 
          values.add(String.valueOf((finalparsedData))); 

         }  
         return "done"; 
        } catch (MalformedURLException e) { 
         e.printStackTrace(); 
         return "error"; 
        } catch (IOException e) { 
         e.printStackTrace(); 
         return "error"; 
        } catch (JSONException e) { 
         e.printStackTrace(); 
         return "error"; 
        } finally { 
         if (connection != null) { 
          connection.disconnect(); 
         } 

         try { 
          if (reader != null) { 
           reader.close(); 
           return "done"; 

          } 

         } catch (IOException e) { 
          e.printStackTrace(); 
          return "error"; 
         } 
        } 
       } 

       @Override 
       protected void onPostExecute(String result) { 

        switch (result){ 
         case "done": 
          MyImageAdapter adapter = new MyImageAdapter(MainActivity.this, values); 
          myGrid.setAdapter((ListAdapter) adapter); 
          break; 

        } 

       } 
      } 
     } 

MyAdapterClass:

public class MyImageAdapter extends BaseAdapter { 

    ArrayList<String> values; 
    Context mContext; 

    public MyImageAdapter(Context mContext, ArrayList<String> values) { 
     this.values = values; 
     this.mContext = mContext; 
    } 

    @Override 
    public int getCount() { 
     return values.size(); 
    } 

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

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


    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     View row = convertView; 
     ViewHolder holder; 
; 
     if (row == null){ 
      LayoutInflater inflater = (LayoutInflater)mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
      row = inflater.inflate(R.layout.grid,parent,false); 
      holder = new ViewHolder(); 
      holder.imageView = (ImageView) row.findViewById(R.id.image_View); 
      row.setTag(holder); 
     } else { 
      holder = (ViewHolder) row.getTag(); 
     } 

     String image = values.get(position); 

     Picasso.with(mContext).load(image).into(holder.imageView); 

     return row; 
    } 
    public class ViewHolder { 

     ImageView imageView; 
    } 
} 

私は1つだけの画像が示されている10枚のうち、GridViewのローディング画像中に問題を持って残りの部分は「この画像はもはや入手できません」

+0

あなたはApiからデータを取得していますか?はいの場合、urlが無効な可能性があります。つまり、ImageはこのURLで利用できません。取得しているURLの有効性を確認してください。 – ADM

+0

はい私はデータを取得し、URLも有効です。 Log.dを使用してURLをチェックすると、ブラウザの表示イメージにURLをチェックすると、すべてのイメージのURLが表示されます。 –

+0

「この画像はもはや利用できません」これは、URLが一般に公開されていないことを意味します。彼らはブラウザで開きましたか? – ADM

答えて

1

ハハハ、愚かな間違い。

. 
. 
. 
for (int i = 0; i < parentarray.length(); i++) { 

    JSONObject finalObject = parentarray.getJSONObject(i); 
    photoid = finalObject.optString("id"); 
    farm = finalObject.optInt("farm"); 
    server = finalObject.optString("server"); 
    secret = finalObject.optString("secret"); 
    String fullPath = "https://farm" + farm + ".staticflickr.com/" + server + "/" + photoid+ "_" + secret + ".jpg"; 

    values.add(fullPath); 
} 
. 
. 
. 

StringBufferを使用する必要はありません。通常のString変数を使用する必要があります。 :)

+0

間違いなく動作します.... – Dhruv

+0

ああ、その働きがけの多い、私は最後の2日間につかまった.. –

+0

thatsなぜ私はここにいる、目盛りをクリックしてこの回答を受け入れてください... – Dhruv

関連する問題