После нажатия кнопки назад с кого-либо фрагмента, к мою recyclerView добавляется еще один такой же recyclerView и так до бесконечности
Хотя бы наводку где скорее всего проблема.
После нажатия(добавились еще эти же элементы):

Мой адаптер:
public class HoroscopeAdapter extends RecyclerView.Adapter<HoroscopeAdapter.HoroscopeViewHolder> {
List<HoroscopeData> horoscopeDataList;
private Context context;
int resId;
public HoroscopeAdapter(Context context, List<HoroscopeData> horoscopeDataList) {
this.context = context;
this.horoscopeDataList = horoscopeDataList;
}
@NonNull
@Override
public HoroscopeAdapter.HoroscopeViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View itemView = LayoutInflater.from(parent.getContext()).inflate(R.layout.horoscope_list_row, parent, false);
return new HoroscopeViewHolder(itemView);
}
@Override
public void onBindViewHolder(@NonNull HoroscopeAdapter.HoroscopeViewHolder holder, int position) {
HoroscopeData horoscopeData = horoscopeDataList.get(position);
holder.zodiacName.setText(horoscopeData.zodiacName);
resId = context.getResources().getIdentifier(horoscopeData.zodiacImageName, "drawable", "com.alex.horoscopeapp");
holder.imageView.setBackgroundResource(resId);
}
@Override
public int getItemCount() {
return horoscopeDataList.size();
}
class HoroscopeViewHolder extends RecyclerView.ViewHolder {
LinearLayout parent;
TextView zodiacName;
ImageView imageView;
public HoroscopeViewHolder(@NonNull View itemView) {
super(itemView);
parent = itemView.findViewById(R.id.parent);
zodiacName = itemView.findViewById(R.id.zodiacName);
imageView = itemView.findViewById(R.id.imageView);
itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Bundle bundle = new Bundle();
bundle.putString("zodiacName", zodiacName.getText().toString());
Navigation.findNavController(view).navigate(R.id.nav_showHoroscope, bundle);
}
});
}
}
}
Установка адаптера:
public class HoroscopeFragment extends Fragment {
private final List<HoroscopeData> horoscopeDataArrayList = new ArrayList<>();
public View onCreateView(@NonNull LayoutInflater inflater,
ViewGroup container, Bundle savedInstanceState) {
View root = inflater.inflate(R.layout.fragment_horoscope, container, false);
RecyclerView recyclerView = root.findViewById(R.id.recycler_view);
ImageView imageView = root.findViewById(R.id.imageView);
HoroscopeAdapter horoscopeAdapter = new HoroscopeAdapter(getContext(), horoscopeDataArrayList);
RecyclerView.LayoutManager manager = new GridLayoutManager(getContext(), 3);
recyclerView.setLayoutManager(manager);
recyclerView.setAdapter(horoscopeAdapter);
String[] zodiacArrayEng = {"taurus", "gemini", "cancer", "leo", "virgo", "libra", "scorpio", "sagittarius", "capricorn", "aquarius", "pisces"};
String[] zodiacArrayRus = {"телец", "близнецы", "рак", "лев", "дева", "весы", "скорпион", "стрелец", "козерог", "водолей", "рыбы"};
HoroscopeData horoscopeData = new HoroscopeData("ОВЕН", "aries200", imageView);
horoscopeDataArrayList.add(horoscopeData);
for (int i = 0; i < zodiacArrayEng.length; i++) {
horoscopeData = new HoroscopeData(zodiacArrayRus[i].toUpperCase(), zodiacArrayEng[i].toLowerCase() + "200", imageView);
horoscopeDataArrayList.add(horoscopeData);
}
return root;
}
}
Ответы (1 шт):
Автор решения: avoloshinn
→ Ссылка
Как вариант попробуйте очищать список horoscopeDataArrayList.clear() перед добавлением элементов. Перед for.
