我如何为 json 解析集成 loopj
how can I integrate loopj for a json parse
这些是我的 onCreate 中的说明:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Client c = new Client();
String p=c.get();
((TextView) findViewById(R.id.textView)).setText(p);}
这是我的客户class
public class Client {
public String prova;
public String get() {
String url = "FILE_JSON_ONLINE_URL";
AsyncHttpClient client = new AsyncHttpClient();
client.get(url, null, new
JsonHttpResponseHandler() {
@Override
public void onSuccess(int statusCode, Header[] headers, JSONObject response) {
prova = response.toString();
}
@Override
public void onFailure(int statusCode, Header[] headers, String res, Throwable t) {
}
});
return prova;
}
但是我的texview是空的,好像命令client.get不起作用,谁能帮帮我
这是因为 Client
class returns prova
的 public String get()
方法在 onSuccess()
之前设置了一个值。
这是正常的,因为是异步调用。
在您的情况下,您必须在 public String get()
方法中创建一个接口来处理异步调用,如下所示:
public class Client {
// This interface will be used in your get() method, and implement in your first snippet
public interface MyClientCallback {
public void onResponse(String value);
}
// Add your interface as param
public void get(MyClientCallback callback) {
```
// prova = response.toString();
callback.onReponse(response.toString());
```
}
}
那么你可以这样称呼它:
TextView textView = (TextView) findViewById(R.id.textView);
c.get(new MyClientCallback() {
@Override
public void onResponse(String value) {
textView.setText(value);
}
});
希望对你有所帮助
这些是我的 onCreate 中的说明:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Client c = new Client();
String p=c.get();
((TextView) findViewById(R.id.textView)).setText(p);}
这是我的客户class
public class Client {
public String prova;
public String get() {
String url = "FILE_JSON_ONLINE_URL";
AsyncHttpClient client = new AsyncHttpClient();
client.get(url, null, new
JsonHttpResponseHandler() {
@Override
public void onSuccess(int statusCode, Header[] headers, JSONObject response) {
prova = response.toString();
}
@Override
public void onFailure(int statusCode, Header[] headers, String res, Throwable t) {
}
});
return prova;
}
但是我的texview是空的,好像命令client.get不起作用,谁能帮帮我
这是因为 Client
class returns prova
的 public String get()
方法在 onSuccess()
之前设置了一个值。
这是正常的,因为是异步调用。
在您的情况下,您必须在 public String get()
方法中创建一个接口来处理异步调用,如下所示:
public class Client {
// This interface will be used in your get() method, and implement in your first snippet
public interface MyClientCallback {
public void onResponse(String value);
}
// Add your interface as param
public void get(MyClientCallback callback) {
```
// prova = response.toString();
callback.onReponse(response.toString());
```
}
}
那么你可以这样称呼它:
TextView textView = (TextView) findViewById(R.id.textView);
c.get(new MyClientCallback() {
@Override
public void onResponse(String value) {
textView.setText(value);
}
});
希望对你有所帮助