0

J'utilise ViewPager et l'annonce (d'Admob) dans la mise en page xml. J'ai deux fragments (HomeFragment et TeamFragment), l'un a un CountDownTimer et l'autre un ListView. Comme nous le savons, ViewPager conserve les deux avec les vues créées de sorte que les deux sont actifs en même temps.CountDownTimer, ViewPager, Ad et actualisation constante Articles ListView - comportement étrange

Le problème est le suivant: Lorsque mon compteur CountDonwTimer est activé (onTick est appelé), les éléments (lignes) de ListView sont actualisés (getView() de ListAdapter est appelée).

Ce qui est intéressant, cela ne se produit que lorsque l'annonce montre (connexion Internet est activée). Quand il n'y a pas d'annonce, tout fonctionne bien (pas d'actualisation de ListView).

Ce n'est pas un gros problème, mais il draine la batterie.

Journaux:

01-21 15:56:35.150: D/HomeFragment(17366): onTick() in CountDownTimer - just before counterTV.setText(...) 
01-21 15:56:35.155: D/ListAdapter in TeamFragment(17366): getView() position: 0 
01-21 15:56:35.215: D/ListAdapter in TeamFragment(17366): getView() position: 1 
01-21 15:56:35.230: D/ListAdapter in TeamFragment(17366): getView() position: 2 
01-21 15:56:35.245: D/ListAdapter in TeamFragment(17366): getView() position: 3 
01-21 15:56:35.255: D/ListAdapter in TeamFragment(17366): getView() position: 4 
01-21 15:56:35.260: D/ListAdapter in TeamFragment(17366): getView() position: 0 
01-21 15:56:35.265: D/ListAdapter in TeamFragment(17366): getView() position: 1 
01-21 15:56:35.265: D/ListAdapter in TeamFragment(17366): getView() position: 2 
01-21 15:56:35.270: D/ListAdapter in TeamFragment(17366): getView() position: 3 
01-21 15:56:35.275: D/ListAdapter in TeamFragment(17366): getView() position: 4 
01-21 15:56:40.160: D/HomeFragment(17366): onTick() in CountDownTimer - just before counterTV.setText(...) 
01-21 15:56:40.170: D/ListAdapter in TeamFragment(17366): getView() position: 0 
01-21 15:56:40.185: D/ListAdapter in TeamFragment(17366): getView() position: 1 
01-21 15:56:40.200: D/ListAdapter in TeamFragment(17366): getView() position: 2 
01-21 15:56:40.215: D/ListAdapter in TeamFragment(17366): getView() position: 3 
01-21 15:56:40.225: D/ListAdapter in TeamFragment(17366): getView() position: 4 
01-21 15:56:40.245: D/ListAdapter in TeamFragment(17366): getView() position: 0 
01-21 15:56:40.260: D/ListAdapter in TeamFragment(17366): getView() position: 1 
01-21 15:56:40.260: D/ListAdapter in TeamFragment(17366): getView() position: 2 
01-21 15:56:40.265: D/ListAdapter in TeamFragment(17366): getView() position: 3 
01-21 15:56:40.270: D/ListAdapter in TeamFragment(17366): getView() position: 4 
01-21 15:56:45.165: D/HomeFragment(17366): onTick() in CountDownTimer - just before counterTV.setText(...) 
01-21 15:56:45.170: D/ListAdapter in TeamFragment(17366): getView() position: 0 
01-21 15:56:45.185: D/ListAdapter in TeamFragment(17366): getView() position: 1 
01-21 15:56:45.200: D/ListAdapter in TeamFragment(17366): getView() position: 2 
01-21 15:56:45.215: D/ListAdapter in TeamFragment(17366): getView() position: 3 
01-21 15:56:45.225: D/ListAdapter in TeamFragment(17366): getView() position: 4 
01-21 15:56:45.245: D/ListAdapter in TeamFragment(17366): getView() position: 0 
01-21 15:56:45.260: D/ListAdapter in TeamFragment(17366): getView() position: 1 
01-21 15:56:45.265: D/ListAdapter in TeamFragment(17366): getView() position: 2 
01-21 15:56:45.270: D/ListAdapter in TeamFragment(17366): getView() position: 3 
01-21 15:56:45.270: D/ListAdapter in TeamFragment(17366): getView() position: 4 

HomeFragment:

public class HomeFragment extends SherlockFragment { 
    (...) 

    private OpeningCeremonyTimer countDownTimer; 
    private TextView counterTV; 

    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     (...) 

     countDownTimer = new OpeningCeremonyTimer(initialTime, 5000); 
     countDownTimer.start(); 

     return view; 
    } 

    private class OpeningCeremonyTimer extends CountDownTimer { 
     private StringBuilder time = new StringBuilder(); 

     public OpeningCeremonyTimer(long millisInFuture, long countDownInterval) { 
      super(millisInFuture, countDownInterval); 

     } 

     @Override 
     public void onTick(long millisUntilFinished) { 
      time.setLength(0); 
      if (millisUntilFinished > DateUtils.DAY_IN_MILLIS) { 
       long count = millisUntilFinished/DateUtils.DAY_IN_MILLIS; 
       if (count > 1) 
        time.append(count).append(" days "); 
       else 
        time.append(count).append(" day "); 
       millisUntilFinished %= DateUtils.DAY_IN_MILLIS; 
      } 

      time.append(DateUtils.formatElapsedTime(Math.round(millisUntilFinished/1000d))); 

      Log.d(TAG, "onTick() in CountDownTimer - just before counterTV.setText(...)"); 
      counterTV.setText(time.toString()); 
     } 

     @Override 
     public void onFinish() { 
      counterTV.setText(DateUtils.formatElapsedTime(0)); 

     } 

    } 
} 

TeamFragment:

public class TeamFragment extends SherlockFragment { 
    (...) 


    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     (...) 

     TeamFragmentListAdapter matchesListAdapter = new TeamFragmentListAdapter(context, matchesList); 
     matchesLV.setAdapter(matchesListAdapter); 

     return view; 
    } 
} 

Voici ma mise en page principale:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:ads="http://schemas.android.com/apk/lib/com.google.ads" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" > 

    <com.google.ads.AdView 
     android:id="@+id/adView" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_alignParentBottom="true" 
     ads:adSize="SMART_BANNER" 
     ads:adUnitId="xxx" 
     ads:loadAdOnCreate="true"/> 

    <android.support.v4.view.ViewPager 
     android:id="@+id/pager" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_above="@id/adView"/> 

</RelativeLayout> 

Répondre

0

J'ai résolu ceci. Je viens de changer layout_height = "wrap_content" en layout_height = "match_parent" dans ma ListView.

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="wrap_content" 
android:orientation="vertical" > 

<ListView 
    android:id="@+id/groupsLV" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:divider="@null" 
    android:dividerHeight="0dp" > 
</ListView> 

En savoir plus sur wrap_conent et match_parent à listviews est ici: http://www.youtube.com/watch?v=wDBM6wVEO70

Questions connexes