Hallo Ich habe ein Tab-Layout, das eine Reihe von Fragmenten durch einen Viewpager aufbläht jedes Fragment instanziiert eine Reihe von Ansichten alles funktioniert gut, aber es gibt ein Problem, wenn ich durch ein paar Fragmente wischen und dann die Fragmente zurück durch den Lebenszyklus gehen wird abgenommen und angebracht und seine Ansichten in dem Fragmente ergebenden die Ansichten in ihrem Layout Verdopplungs Einrichtung,Wie kann die Recycleransicht in einem Fragmentlebenszyklus richtig gehandhabt werden?
zB: Fragment zeigt 5 Ansichten, Streich durch einige Fragmente und Swipe zurück gleiches Fragment zeigt dann 10 Ansichten
ich glaube Es ist, weil ich alles in OnCreateView gesetzt habe ich versuchte, die Setup-Aufrufe auf OnViewCreated zu verschieben, die mir ein anderes Problem gibt, das Fragment und die Ansichten sind in Ordnung, aber wenn Sie aw wischen AY und dann zurück sind die Ansichten weg und die Konsole sagt mir, dass kein Adapter das Layout überspringt. Das Nachforschen brachte mir den Eindruck, dass ich meine Adapteraufrufe in den Hauptthread verschieben musste jemand mich in die richtige Richtung zeigen kann versuchen,
hier ist der wichtigste Teil meines Fragment
public class OneFragment extends Fragment{
public static List<CardWriter> cardMakerList = new ArrayList<>();
private RecyclerView recyclerView;
private GridLayoutManager staggeredGridLayoutManagerVertical;
public static CardAdapter cardAdapter;
public OneFragment() {
// Required empty public constructor
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setRetainInstance(true);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate
(R.layout.fragment_one, container, false);
RecyclerView.LayoutManager staggeredGridLayoutManagerVertical = new
StaggeredGridLayoutManager(4,LinearLayoutManager.VERTICAL);
recyclerView = (RecyclerView) rootView.findViewById(R.id.card_grid);
cardAdapter = new CardAdapter(cardMakerList);
recyclerView.setLayoutManager(staggeredGridLayoutManagerVertical);
recyclerView.setItemAnimator(new DefaultItemAnimator());
recyclerView.setAdapter(cardAdapter);
recyclerView.addOnItemTouchListener(new
RecyclerTouchListener(getActivity().getApplicationContext(),
recyclerView, new ClickListener() {
@Override
public void onClick(View view, int position) {
CardWriter cardWriter = cardMakerList.get(position);
SpeakGrid.cardMakerList.add(SpeakGrid.cardMakerList.size(),cardWriter);
SpeakGrid.cardAdapter.notifyItemInserted(SpeakGrid.cardMakerList.size());
SpeakRecyclerGrid.cardMakerList.add
(SpeakRecyclerGrid.cardMakerList.size(),cardWriter);
SpeakRecyclerGrid.cardAdapter.notifyItemInserted
(SpeakGrid.cardMakerList.size());
Snackbar.make(view, "This card is " +
cardWriter.getCardEmotion() + " and it would say " +
cardWriter.getCardEmotion(), Snackbar.LENGTH_LONG)
.setAction("Action", null).show();
}
ive been going through and debugging this and it was also happening while rotating so im now using if (savedinstance state == null) to solve the issue with rotating but it must be lost when scrolling because it still happens if i scroll more than one away and come back the cards in the view have doubled
nur für die Zukunft dieses Beste zu sein scheint Übung, aber löst mein Problem nicht, –