2017-10-22 3 views
-2

Die Anwendung funktioniert, wenn ich die URL in ReadJSON() fest codiert habe. Execute (meine URL hier);Die Bilder werden nicht aus der JSON-Datei in den ListView geladen

Aber nach dem Ändern der URL zu Texteingabe wird es keine Bilder laden.

Dies ist das erwartete Ergebnis: https://imgur.com/a/QyKG1

Hier ist die gesamte Datei: https://pastebin.com/e6Q5ViuS

Hier ist der Code, der den Fehler enthält:

class ReadJSON extends AsyncTask<String, Integer, String> { 

     @Override 
     protected String doInBackground(String... params) { 
      return readURL(params[0]); 
     } 

     @Override 
     protected void onPostExecute(String content) { 
      try { 

       JSONArray jsonArray = new JSONArray(content); 

       for(int i =0;i<jsonArray.length(); i++){ 
        JSONObject productObject = jsonArray.getJSONObject(i); 
        arrayList.add(new Product(
          productObject.getString("photo"), 
          productObject.getString("author") 

        )); 
       } 
      } catch (JSONException e) { 
       e.printStackTrace(); 
      } 
      CustomListAdapter adapter = new CustomListAdapter(
        getApplicationContext(), R.layout.custom_list_layout, arrayList 
      ); 
      lv.setAdapter(adapter); 
     } 
    } 


    private static String readURL(String theUrl) { 
     StringBuilder content = new StringBuilder(); 
     try { 
      // create a url object 
      URL url = new URL(theUrl); 
      // create a urlconnection object 
      URLConnection urlConnection = url.openConnection(); 
      // wrap the urlconnection in a bufferedreader 
      BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(urlConnection.getInputStream())); 
      String line; 
      // read from the urlconnection via the bufferedreader 
      while ((line = bufferedReader.readLine()) != null) { 
       content.append(line + "\n"); 
      } 
      bufferedReader.close(); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
     return content.toString(); 
    } 
} 
+1

Beachten Sie, dass StackOverflow Ihren Code lieber in der Post selbst statt der externen Links bevorzugt. Externe Links könnten in Zukunft nicht mehr funktionieren, was Ihre Frage für andere unklar macht. –

Antwort

0

Das Problem ist hier:

txtUrl.getText().toString(); 

Sie haben 0 nicht initialisiert, was bedeutet, dass Android nicht weiß, was die txtUrl ist. Sie können dies wie folgt ändern:

txtUrl = (EditText) findViewById(R.id.youredittextid); 
EditTextValue = txtUrl.getText().toString(); 
Verwandte Themen