2016-04-24 8 views
0

Will aktuell aktualisierten Daten von Server laden, Verwenden von Valley API (JSON-Antwort).Daten in einer Activity on OnClick-Methode aktualisieren?

onCreate lädt nur Daten zum ersten Mal. Danach werden keine neuen Daten zur Liste hinzugefügt.

Daten werden geladen, auf Listenansicht (enthält Bild, Text).

protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_downloadimg); 
     buttonrefresh = (Button) findViewById(R.id.btnrefresh); 

     listView = (ListView) findViewById(R.id.listViewdoenload); 

     listItems = new ArrayList<InfoData>(); 

     listAdapter = new CustomAdapter(this, listItems); 
     listView.setAdapter(listAdapter); 


     Cache cache = VolleySingleton.getInstance().getRequestQueue().getCache(); 
     Cache.Entry entry = cache.get(URL_FEED); 
     if (entry != null) { 
      // fetch the data from cache 
      try { 
       String data = new String(entry.data, "UTF-8"); 
       try { 
        parseJsonFeed(new JSONObject(data)); 
       } catch (JSONException e) { 
        e.printStackTrace(); 
       } 
      } catch (UnsupportedEncodingException e) { 
       e.printStackTrace(); 
      } 

     } else { 
      // making fresh volley request and getting json 
      JsonObjectRequest jsonReq = new JsonObjectRequest(Request.Method.GET, 
        URL_FEED, null, new Response.Listener<JSONObject>() { 

       @Override 
       public void onResponse(JSONObject response) { 
        VolleyLog.d(TAG, "Response: " + response.toString()); 
        Log.d("Response: ", response.toString()); 
        if (response != null) { 
         parseJsonFeed(response); 
        } 
       } 
      }, new Response.ErrorListener() { 

       @Override 
       public void onErrorResponse(VolleyError error) { 
        VolleyLog.d(TAG, "Error: " + error.getMessage()); 
       } 
      }); 

      // Adding request to volley request queue 
      VolleySingleton.getInstance().addToRequestQueue(jsonReq); 
     } 

     buttonhome.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       refresh(); 
      } 
     }); 

    } 
+2

yourListView.notifyDataSetChanged(); wird dein Problem lösen;) –

+0

Kannst du etwas Code hinzufügen, Beispiel oder erklären, wie es funktioniert? –

+0

Wenn Sie Ihren Code hinzufügen, kann ich Ihnen helfen. –

Antwort

0

Fügen Sie einfach listAdapter.notifyDataSetChanged(); in Ihrem buttonhome ‚s OnClickListener nach refresh();

+0

Vielen Dank. gelöst :) –

Verwandte Themen