Android 从主机读取json文件在活动中显示白色屏幕如何解决此问题?

Android 从主机读取json文件在活动中显示白色屏幕如何解决此问题?,android,json,Android,Json,我想从我的主机上读取一个JSON文件,我获得了互联网许可,他们的运行也不例外,只是一个白色屏幕,我不这样做 知道怎么了,我怎么解决这个问题? 我希望我能列出一份清单 代码如下 主要活动: package com.example.moham.twitter_ai; public class MainActivity extends AppCompatActivity { private List<tweets> tweetsList = new ArrayList<>

我想从我的主机上读取一个JSON文件,我获得了互联网许可,他们的运行也不例外,只是一个白色屏幕,我不这样做 知道怎么了,我怎么解决这个问题? 我希望我能列出一份清单 代码如下

主要活动:

package com.example.moham.twitter_ai;

public class MainActivity extends AppCompatActivity {
   private List<tweets> tweetsList = new ArrayList<>();
   private ListView listView;
   private tweetAdapter madapter;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    listView = findViewById(R.id.list);
    madapter = new tweetAdapter(this, tweetsList);
    listView.setAdapter(madapter);
    gettweets();
 }

void gettweets() {

    String url = "https://mohammedhemaid.000webhostapp.com/jsonTest.json";

    StringRequest postRequest = new StringRequest(Request.Method.GET, url, 
     new Response.Listener<String>() {


        @Override
        public void onResponse(String response) {

            try {
                JSONObject object = new JSONObject(response);
                String tweetText = object.getString("text");
                String date = object.getString("timestamp_ms");
                JSONObject user = object.getJSONObject("user");
                String name = user.getString("name");
                String screen_name = user.getString("screen_name");


                    tweets tw = 
            new tweets(name, screen_name, tweetText,date);
                    tweetsList.add(tw);


            } catch (JSONException e) {
                e.printStackTrace();
            }

        }
    }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {

            Toast.makeText(MainActivity.this,error.getMessage()
            ,Toast.LENGTH_LONG).show();
        }
    });
    Volley.newRequestQueue(this).add(postRequest);
  }
}

我做错了什么?

您正在获取之前添加空列表,因此当您向列表中添加项目时,适配器不知道它需要刷新。将所有新项目添加到列表后,请致电:

madapter.notifyDatasetChanged()
刷新适配器

此外,您的json似乎不是一个有效的json。我已经用测试过了,它看起来像一个tweet列表,但它既没有包含在[]中,也没有用逗号分隔

如果您的json是一个有效的tweet数组,那么您的代码应该如下所示:

JSONArray objs = new JSONArray(response);
for(JSONObject object : objs){
   String tweetText = object.getString("text");
   String date = object.getString("timestamp_ms");
   JSONObject user = object.getJSONObject("user");
   String name = user.getString("name");
   String screen_name = user.getString("screen_name");
   tweets tw = 
                new tweets(name, screen_name, tweetText,date);
                        tweetsList.add(tw);
}
madapter.notifyDatasetChanged();
madapter.notifyDatasetChanged()
JSONArray objs = new JSONArray(response);
for(JSONObject object : objs){
   String tweetText = object.getString("text");
   String date = object.getString("timestamp_ms");
   JSONObject user = object.getJSONObject("user");
   String name = user.getString("name");
   String screen_name = user.getString("screen_name");
   tweets tw = 
                new tweets(name, screen_name, tweetText,date);
                        tweetsList.add(tw);
}
madapter.notifyDatasetChanged();