如何集成loopj进行json解析



以下是我的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);}

这是我的客户端类

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类的public String get()方法在onSuccess()设置值之前返回prova

这是正常的,因为这是一个异步调用。

在您的情况下,您必须在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);
}
});

我希望它能帮助你。

相关内容

  • 没有找到相关文章

最新更新