Android setText в TextView, когда обратный вызов завершен - PullRequest
2 голосов
/ 11 июля 2020

Здравствуйте, у меня есть такой код: pointsToAssignTv.setText(String.valueOf(restData.getPointsUnass(login)));, где restData.getPointsUnass(login) - это такой код модернизации:

    public int getPointsUnass(String name) {
    Call<String> result = Api.getClient().getPointsUnass(name);
    result.enqueue(new Callback<String>() {
        @Override
        public void onResponse(Call<String> call, Response<String> response) {
            pointsUnass = Integer.parseInt(response.body());
        }
        @Override
        public void onFailure(Call<String> call, Throwable t) {
            Log.e("tag",t.toString());
        }
    });
    return pointsUnass;
}

Я хочу присвоить это значение этому TextView, но он возвращает null, я думаю, это все время его нужно обработать через inte rnet, а затем вернуть. Какой фрагмент кода вы бы порекомендовали написать вместо этого?

Ответы [ 2 ]

2 голосов
/ 11 июля 2020

Вам нужно переместить оператор setText () в метод обратного вызова onResponse (). Просто добавьте этот оператор - pointsToAssignTv.setText(String.valueOf(pointUnass)); в метод onResponse ().

1 голос
/ 11 июля 2020

После получения ответа от API в onResponse следует добавить someText.setText(yourResponse) Примечание: будьте осторожны с потоками, в android вы просто разрешаете изменять элемент пользовательского интерфейса в основном потоке, если вы хотите изменить текст в ответ вы должны использовать обработчик

new Handler(Looper.getMainLooper()).post(new Runnable() {
@Override
public void run() {
    Log.d("UI thread", "I am the UI thread");
}
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...