J'ai trois onglets qui peut contenir de trois fragments différents avec listview pour chaque fragment et il ressemble à ceci:Actualiser fragment ViewPager ne fonctionne pas correctement
Quand je suis en appuyant sur un élément de liste de bouton blanc est ajouté à l'onglet 2 et si j'appuie sur l'élément de la liste des boutons violets est ajouté à l'onglet 3. Tab3 est actualisé parce que viewPager a la limite d'écran par défaut 1, donc quand je navigue vers tab3 il est créé et à ce moment il a son nouveau listitem, mais tab2 est déjà créé quand l'application démarre donc j'ai besoin de l'actualiser. J'ai donc créé la méthode updateView() dans le fragment tab2 et j'appelle cette méthode sur OnPageChangeListener() elle met à jour la vue, mais elle est appelée chaque fois que je navigue vers tab2 et qu'elle cause lag.All je veux faire est de supprimer cette liste article et l'ajouter à tab2 et il se retire et il est ajouté à tab2 mais quand je balayez pour tab2 je ne peux pas le voir, juste après l'application fermer apparaît ou lorsque les appels fragment tab2 onResume, onCreate ...
Async procédé qui permet de charger des éléments de liste en arrière-plan: méthode
public class AchievedDreamFragment extends Fragment {
ListView achievedListView;
Activity activity;
ArrayList<AchievedCloud> achievedClouds;
AchievedListAdapter achievedListAdapter;
AchievedActionHandler achievedActionHandler;
private GetAvedTask atask;
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
activity = getActivity();
achievedActionHandler = new AchievedActionHandler(activity);
}
public class GetAvedTask extends AsyncTask<Void, Void, <AchievedCloud>> {
private final WeakReference<Activity> activityWeakRef;
public GetAvedTask(Activity context) {
this.activityWeakRef = new WeakReference<Activity>(context);
}
@Override
protected ArrayList<AchievedCloud> doInBackground(Void... arg0) {
Log.e(TAG,"do in background");
//achievedActionHandler = new AchievedActionHandler(activity);
ArrayList<AchievedCloud> dreamList = achievedActionHandler.getaDreams();
return dreamList;
}
@Override
protected void onPostExecute(ArrayList<AchievedCloud> adrmList) {
Log.e(TAG,"on Post execute");
if (activityWeakRef.get() != null
&& !activityWeakRef.get().isFinishing()) {
achievedClouds = adrmList;
if (adrmList != null) {
if (adrmList.size() != 0) {
achievedListAdapter = new AchievedListAdapter(activity,
adrmList);
achievedListView.setAdapter(achievedListAdapter);
achievedListAdapter.notifyDataSetChanged();
}
}
}
}
}
UpdateView() en même fragment où AsyncTask est:
public void updateView() {
atask = new GetAvedTask(activity);
atask.execute((Void) null);
}
viewpager OnPageChangeListener():
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
if(position == 1){
achievedDreamFragment.updateView();
}
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
J'ai essayé aussi bien sur l'adaptateur getItemPosition POSITION_NONE, mais il ne résout pas toutes les idées que pourrais-je essayer?
quand je balayez pour tab2 après avoir appuyé sur le bouton blanc Je veux voir cet article il y a – kosas
mec tout ce temps que je cherchais quelque chose comme ça MERCI !!! – kosas