Как я могу интегрировать loopj для анализа JSON - PullRequest
0 голосов
/ 28 ноября 2018

Это инструкции в моем 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 нет работает, кто-нибудь может мне помочь

1 Ответ

0 голосов
/ 29 ноября 2018

Это потому, что ваш public String get() метод класса Client возвращает prova до того, как 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);
    }
});

Надеюсь, это поможет вам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...