Android 如何将多个JSON值返回到多个文本视图?
我研究了Android 如何将多个JSON值返回到多个文本视图?,android,json,Android,Json,我研究了JSON。但是只找到了JSONArray的教程,而没有找到如何使JSONObject允许多个文本视图。我应该有另一种方法,添加参数还是什么 这是我的JSON { "name": "iss", "id": 25544, "latitude": -16.621580566205, "longitude": -22.573425077475, "altitude": 403.33965999684, "velocity": 27615.93253
JSON
。但是只找到了JSONArray
的教程,而没有找到如何使JSONObject
允许多个文本视图。我应该有另一种方法,添加参数还是什么
这是我的JSON
{
"name": "iss",
"id": 25544,
"latitude": -16.621580566205,
"longitude": -22.573425077475,
"altitude": 403.33965999684,
"velocity": 27615.932538565,
"visibility": "daylight",
"footprint": 4421.7128198729,
"timestamp": 1478617317,
"daynum": 2457701.1263542,
"solar_lat": -16.808913358406,
"solar_lon": 310.46294067763,
"units": "kilometers"
}
这是代码如果你想看的话
public class IsstatusActivity extends AppCompatActivity {
String longitSt;
JSONParser jsonparser = new JSONParser();
TextView latitude;
TextView longitude;
String lat;
String longit;
JSONObject jobj = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.isstatus);
latitude = (TextView) findViewById(R.id.Coordinates);
new retrievedata().execute();
}
class retrievedata extends AsyncTask<String, String, String> {
@Override
public String doInBackground(String... args) {
jobj = jsonparser.makeHttpRequest("http://api.wheretheiss.at/v1/satellites/25544");
try {
lat = "latitude: " + jobj.getString("latitude");
longit = "longitude :" + jobj.getString("longitude");
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return lat;
}
@Override
protected void onPostExecute(String lat) {
latitude.setText(lat);
longit.setText(longitude);
}
}
}
public类IsstatusActivity扩展了AppCompatActivity{
弦长;
JSONParser JSONParser=新的JSONParser();
文本视图纬度;
文本视图经度;
弦拉特;
弦长;
JSONObject jobj=null;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.isstatus);
纬度=(TextView)findViewById(R.id.坐标);
新建retrievedata().execute();
}
类retrievedata扩展了异步任务{
@凌驾
公共字符串doInBackground(字符串…args){
jobj=jsonparser.makeHttpRequest(“http://api.wheretheiss.at/v1/satellites/25544");
试一试{
lat=“纬度:”+jobj.getString(“纬度”);
longit=“经度:”+jobj.getString(“经度”);
}捕获(JSONException e){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
返回lat;
}
@凌驾
受保护的void onPostExecute(字符串lat){
纬度.setText(纬度);
经度;
}
}
}
您在onPostExecute()而不是longit中做错了。setText(经度)使用经度。setText(longit)因为经度是TextView引用,longit是字符串。它是这样的
1.使用字符串lat和long作为全局变量。
二,。进行网络呼叫后,设置lat和long值。
3。在文本视图的onPostExecute setText中。您试图实现什么?受保护的void onPostExecute(字符串lat,字符串long){latitude.setText(lat);longit.setText(经度);}当前代码有什么问题?@覆盖受保护的void onPostExecute(字符串lat){latitude.setText(lat);longitude.setText(longit);}}}}}}}}它现在工作了吗?我修复了它,但它有一个错误java.lang.NullPointerException:尝试调用虚拟方法'void android.widget.TextView.setText(java.lang.CharSequence)'在空对象引用上,ongitute在代码中为空。请查看onCreate方法。Add longitude=(TextView)findViewById(R.id.something);