2017-08-04 113 views
0
package net.myaapp.app.weatherapp; 

import android.os.Handler; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.widget.TextView; 

import com.android.volley.Request; 
import com.android.volley.RequestQueue; 
import com.android.volley.Response; 
import com.android.volley.VolleyError; 
import com.android.volley.toolbox.JsonArrayRequest; 
import com.android.volley.toolbox.JsonObjectRequest; 
import com.android.volley.toolbox.Volley; 

import org.json.JSONArray; 
import org.json.JSONException; 
import org.json.JSONObject; 

import java.text.DateFormat; 
import java.text.SimpleDateFormat; 
import java.util.Date; 


public class newsfeed extends AppCompatActivity { 
    RequestQueue rq; 

    TextView message_title; 
    private String message ; 
    String url = "https://graph.facebook.com/v2.10/"; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_newsfeed); 
     rq = Volley.newRequestQueue(this); 

     message_title = (TextView)findViewById(R.id.message_feed) ; 

     sendjsonrequest(); 

    } 

    public void sendjsonrequest() { 

     JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(Request.Method.GET, url, null, new Response.Listener<JSONObject>() { 

      @Override 
      public void onResponse(JSONObject response) { 

       try { 
        JSONObject feed = response.getJSONObject("feed"); 
        JSONArray jsonArray = feed.getJSONArray("data"); 
        for (int i=0;i<jsonArray.length();i++){ 
         JSONObject data = jsonArray.getJSONObject(i); 

         message = data.getString("message"); 

         message_title.setText(message); 
        } 


       } catch (JSONException e) { 
        e.printStackTrace(); 
       } 
      } 
     }, new Response.ErrorListener() { 
      @Override 
      public void onErrorResponse(VolleyError error) { 

      } 
     }); 
     rq.add(jsonObjectRequest); 

    } 



    private String getDate(long timeStamp) { 
     try { 
      DateFormat sdf = new SimpleDateFormat("MM/dd/yyyy hh:mm:ss"); 
      Date netDate = (new Date(timeStamp)); 
      return sdf.format(netDate); 
     } catch (Exception ex) { 
      return "xx"; 
     } 
    } 
} 

其实我尝试从我的facebook网页得到新闻提要,代码工作正常,但遗憾的是并没有显示所有的数组列表,我只得到最后一个元素,数据JSON内容数组[10]。我只得到9号元素,另一个元素不显示。也许问题与数组列表?有任何想法吗?我错过了什么吗?凌空JSON数组只能得到最后一个元素

+0

排气的JsonObjectRequest有一些问题...使用StringRequest代替 – bharath

回答

1

我相信会发生这种情况,因为每次JSON数组循环播放时,都会用新消息覆盖文本视图内容。因此,如果要显示所有消息,最好将新消息附加到先前循环的消息中,在循环外打印。

  for (int i=0;i<jsonArray.length();i++){ 
        JSONObject data = jsonArray.getJSONObject(i); 

        message += data.getString("message")+"\n";  
       } 
      message_title.setText(message);