Я только начал писать свое первое приложение для Android, и у меня возникли проблемы. Я не знаю, как правильно обрабатывать HTTP-ответ. Я нашел способ создания запроса GET (с okhttp) и нашел способ обработать ответ с помощью Callable. Я получаю массив своих объектов, а затем нужно создать новый адаптер для RecycleView (с этим массивом), но я не могу установить адаптер из основного потока. Я не знаю, как получить данные из этой Callable.Обработка HTTP-ответа HTTP
Создание запроса
public static void getDonerPoints() {
try {
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("http://192.168.2.64:9000/donerPoint/get?count=100&orderBy=rating&orderDirection=asc")
.build();
client.newCall(request).enqueue(
new Callback() {
@Override
public void onFailure(Call call, IOException e) {
Log.d("mLog", "request error");
}
@Override
public void onResponse(Call call, Response response) throws IOException {
try {
final ArrayList<DonerPoint> points = new ArrayList<>();
if (response.code() == HttpURLConnection.HTTP_OK) {
JSONArray jsonArray = new JSONArray(response.body().string());
ObjectMapper mapper = new ObjectMapper();
for (int i = 0; i < jsonArray.length(); i++)
points.add(mapper.readValue(jsonArray.getString(i), DonerPoint.class));
ListFragment.setNewContentForAdapter(points);
Log.d("mLog", "ok");
}
} catch (Exception exc) {
Log.d("mLog", exc.toString());
}
}
});
} catch (Exception exc) {
}
}
Установка адаптера
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.list_tab, container, false);
mRecyclerView = (RecyclerView) rootView.findViewById(R.id.rv);
mLayoutManager = new LinearLayoutManager(getContext());
mRecyclerView.setLayoutManager(mLayoutManager);
return rootView;
}
public static void setNewContentForAdapter(List<DonerPoint> points){
mAdapter=new PointAdapter(points);
mRecyclerView.setAdapter(mAdapter);
}
И Excexption
android.view.ViewRootImpl$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.
Может быть, я должен сделать это не в статическом контексте?
Пожалуйста, пост код, чтобы проиллюстрировать то, что вы до сих пор. –