Android 从主机读取json文件在活动中显示白色屏幕如何解决此问题?
我想从我的主机上读取一个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<>
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();