Я пытаюсь заполнить RecyclerView объектами Mood.Эти объекты создаются в Activity, которая связана с RecyclerView Activity (MoodsActivity), когда создается Mood, и сохраняется в SharedPrefs через строку Gson.Recycler не заполняется, и я получаю сообщение о том, что основной поток может выполнять слишком много работы.Сейчас я пытаюсь реализовать асинхронную задачу, чтобы взять строку Gson, которая представляет собой список объектов моего настроения, разделить настроения на отдельные списки ArrayLists и затем вернуть их.
Я пытался использовать асинхронную задачу, но я изо всех сил пытаюсь реализовать ее так, чтобы она возвращалась.Кажется, он не любит использовать общие настройки.
try {
ArrayList<Mood> historyList = gson.fromJson(history, ArrayList.class);
ArrayList<String> moodNames = new ArrayList<>();
ArrayList<String> moodGenres = new ArrayList<>();
ArrayList<Color> moodColors = new ArrayList<>();
for (int i = 0; i < historyList.size(); i++){
moodNames.add(historyList.get(i).getName());
moodGenres.add(historyList.get(i).getGenre());
moodColors.add(historyList.get(i).getColor());
}
createRecycler(moodNames, moodGenres, moodColors);
} catch (Exception e){
System.out.print("Couldn't load any moods");
}
View v = findViewById(buttonId);
Button preferenceButton = (Button) v;
preferenceButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent preferencesPage = new Intent(view.getContext(), PreferencesActivity.class);
startActivity(preferencesPage);
}
});
}
public void createRecycler(ArrayList<String> names, ArrayList<String> genres, ArrayList<Color> colors){
System.out.print("Reached");
RecyclerView rView = findViewById(R.id.moodlistView);
RecycleViewAdapter rAdapt = new RecycleViewAdapter(names, genres, colors, this);
rView.setAdapter(rAdapt);
rView.setLayoutManager(new LinearLayoutManager(this));
}
Мой класс Async ниже
public class DoSomeTasks extends AsyncTask<String, Integer, String> {
@Override
protected String doInBackground(String... strings) {
SharedPreferences prefs = getPreferences(getBaseContext().MODE_PRIVATE); //doesn't like using getPrefs
try {
String history = prefs.getString("history", "DEFAULT");
Gson gson = new Gson();
ArrayList<Mood> historyList = gson.fromJson(history, ArrayList.class);
ArrayList<String> moodNames = new ArrayList<>();
ArrayList<String> moodGenres = new ArrayList<>();
ArrayList<Color> moodColors = new ArrayList<>();
for (int i = 0; i < historyList.size(); i++){
moodNames.add(historyList.get(i).getName());
moodGenres.add(historyList.get(i).getGenre());
moodColors.add(historyList.get(i).getColor());
}
createRecycler(moodNames, moodGenres, moodColors);
} catch (Exception e){
System.out.print("Couldn't load any moods");
}
return null;
}
}