У меня есть фрагмент в моем приложении для Android, идея состоит в том, чтобы извлечь информацию из файла json (github) и проанализировать ее для заголовков, которые затем обновляются в моем обзоре переработчика. Я могу вытащить данные просто отлично, получил их в список, который является моей схемой.
Теперь эти данные находятся во внутреннем классе "onResponse", то есть также во внутреннем классе "onCreateView".
Код для обновления моего повторного просмотра находится во внутреннем классе onCreateView. Как передать список от onResponse, onCreate или даже глобальному уровню?
В этом классе у меня есть 2 глобальные переменные:
static List<GithubRepo> list = new ArrayList<>();
static List<String> List_body = new ArrayList<>();
Теперь, во внутреннем методе класса "Create", который создает мое представление, я использую модификацию для анализа json github, чтобы получить имена некоторых репозиториев.
Я могу получить их просто отлично, но когда я получаю список из "response.body", то анализирую его должным образом в строку, получая только заголовки, используя:
private void setList(List<GithubRepo> repo){
if (repo != null) {
int counter = 0;
for (GithubRepo r : repo) {
String name = r.getName().toString();
List_body.add(name);
counter++;
}
}
else{
Log.d("test:empty", "empty");
}
}
GithubRepo, приведенный выше, является просто структурой объекта для json, я получаю имена во внутреннем классе, устанавливаю их, но они остаются нулевыми, когда я пытаюсь применить новый список к моим представлениям. Как мне установить значения глобальной / статической переменной из переменной в моем внутреннем классе?
Вот и все:
public class primary_fragment extends Fragment implements Agg_Adapter.ItemClickListener {
static List<GithubRepo> list = new ArrayList<>(); <--------HOLDS value of schema object temporarily
static List<String> List_body = new ArrayList<>(); <--------UPDATES the recyclerview, currently empty
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup viewGroup, Bundle savedInstanceState) {
.... Some code
call.enqueue(new Callback<List<GithubRepo>>() {
@Override <------------------------- From here is the inner class
public void onResponse(Call<List<GithubRepo>> call, Response<List<GithubRepo>> response) {
// 1. start
if (response.isSuccessful()) {
if (response.body() != null) {
list.addAll(response.body());
setList(list);
});
Log.d("testedB2!:", (List_body.toString())); <------Should have the values set but it is null
Возможно, это что-то действительно простое, но я забыл это! Дайте мне знать, если мне нужно что-то уточнить.