2017-09-15 2 views
0

Comment implémenter le minuteur dans Glisser automatiquement l'image dans le fragment? J'ai utilisé Fragment et CustomSwipeAdapter et je ne sais pas où mettre la minuterie pour faire glisser les images automatiquement. Est-ce dans le Fragment ou dans CustomSwipe Adpater?Comment implémenter le minuteur dans Glisser automatiquement l'image dans le fragment?

Ceci est pour le Fragment:

public class PrimaryFragment extends Fragment { 


    public static ViewPager viewPager1; 

    CustomSwipeAdapter adapter; 
    public PrimaryFragment() { 
     // Required empty public constructor 

    } 

    private String[] health ={"Abdominal Disorder","Abrasion","Aches","Anxiety","Bruises","Burns or Scalds","Constipation","Coughs" + 
      "","Cramps","Diarrhea","Dizziness","Dyspepsia","Epilepsy","Fever","Gastric Problem" + 
      "","High Blood Pressure","Hydrophobia","Tonsillitis"}; 


    @Override 
    public void onCreate(Bundle savedInstanceState) { 

     super.onCreate(savedInstanceState); 



    } 

    @Nullable 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     // return inflater.inflate(R.layout.primary_layout,null); 
     //((AppCompatActivity)getActivity()).getSupportActionBar().setTitle("First Aid and Survival Tips"); 



     View rootView = inflater.inflate(R.layout.primary_layout,container,false); 

     viewPager1 = (ViewPager) rootView.findViewById(R.id.view_pager); 
     adapter = new CustomSwipeAdapter(this.getActivity()); 
     viewPager1.setAdapter(adapter); 


     ListView lv = (ListView) rootView.findViewById(R.id.oneListView); 
     ArrayAdapter adapter = new ArrayAdapter(this.getActivity(),android.R.layout.simple_list_item_1,health); 
     lv.setAdapter(adapter); 


     lv.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
      public void onItemClick(AdapterView<?> parent, View view, 
            int position, long id) { 
       // Toast.makeText(getActivity(),health[position],Toast.LENGTH_SHORT).show(); 
       if(position == 0) { 
        Intent intent = new Intent(view.getContext(), abdominal.class); 
        startActivity(intent); 
       } 
       if(position == 1) { 
        Intent intent = new Intent(view.getContext(), abrasion.class); 
        startActivity(intent); 
       } 
       if(position == 2) { 
        Intent intent = new Intent(view.getContext(), aches.class); 
        startActivity(intent); 
       } 
       if(position == 3) { 
        Intent intent = new Intent(view.getContext(), allergies.class); 
        startActivity(intent); 
       } 
       if(position == 4) { 
        Intent intent = new Intent(view.getContext(), bruises.class); 
        startActivity(intent); 
       } 
       if(position == 5) { 
        Intent intent = new Intent(view.getContext(), burns.class); 
        startActivity(intent); 
       } 
       if(position == 6) { 
        Intent intent = new Intent(view.getContext(), constipation.class); 
        startActivity(intent); 
       } 
       if(position == 7) { 
        Intent intent = new Intent(view.getContext(), coughs.class); 
        startActivity(intent); 
       } 
       if(position == 8) { 
        Intent intent = new Intent(view.getContext(), cramps.class); 
        startActivity(intent); 
       } 
       if(position == 9) { 
        Intent intent = new Intent(view.getContext(), diarrhea.class); 
        startActivity(intent); 
       } 
       // if(position == 10) { 
       //  Intent intent = new Intent(view.getContext(), digestive.class); 
       // startActivity(intent); 
       // } 
       if(position == 10) { 
        Intent intent = new Intent(view.getContext(), dizziness.class); 
        startActivity(intent); 
       } 
       if(position == 11) { 
        Intent intent = new Intent(view.getContext(), dyspepsia.class); 
        startActivity(intent); 
       } 
       if(position == 12) { 
        Intent intent = new Intent(view.getContext(), epilepsy.class); 
        startActivity(intent); 
       } 
       if(position == 13) { 
        Intent intent = new Intent(view.getContext(), fever.class); 
        startActivity(intent); 
       } 
       if(position == 14) { 
        Intent intent = new Intent(view.getContext(), gastric.class); 
        startActivity(intent); 
       } 
       if(position == 15) { 
        Intent intent = new Intent(view.getContext(), highblood.class); 
        startActivity(intent); 
       } 
       if(position == 16) { 
        Intent intent = new Intent(view.getContext(), hydrophobia.class); 
        startActivity(intent); 
       } 
       if(position == 17) { 
        Intent intent = new Intent(view.getContext(), tonsilitis.class); 
        startActivity(intent); 
       } 
      } 
     }); 
     return rootView; 
    }} 

CustomSwipeAdapter

public class CustomSwipeAdapter extends PagerAdapter { 
    private int[] image_resource = {R.drawable.one, R.drawable.two, R.drawable.three}; 
    private Context ctx; 
    private LayoutInflater layoutInflater; 

    public CustomSwipeAdapter(Context ctx) { 
     this.ctx = ctx; 
    } 

    @Override 
    public int getCount() { 

     return image_resource.length; 
    } 

    @Override 
    public boolean isViewFromObject(View view, Object object) { 
     return (view == (LinearLayout)object); 
    } 

    @Override 
    public Object instantiateItem(ViewGroup container, int position) { 
     layoutInflater = (LayoutInflater) ctx.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     View item_view = layoutInflater.inflate(R.layout.swipe_layout, container, false); 
     ImageView imageview = (ImageView) item_view.findViewById(R.id.image_view); 
     /*TextView textView = (TextView) item_view.findViewById(R.id.image_count);*/ 
     imageview.setImageResource(image_resource[position]); 
     /* textView.setText("" + position);*/ 
     container.addView(item_view); 
     return item_view; 
    } 

    @Override 
    public void destroyItem(ViewGroup container, int position, Object object) { 
     container.removeView((LinearLayout)object); 
    } 

} 
+0

qui doit être l'attribution de tableau de chaînes le plus effrayant je J'ai toujours vu: O – Merlin

+0

J'ai utilisé une bibliothèque. Celui-ci ici https://github.com/daimajia/AndroidImageSlider Soyez prudent avec la fuite de mémoire, travailler avec des images est toujours difficile. –

Répondre

0
Handler h = new Handler(); 
int delay = 15000; //1 second 
Runnable runnable; 
private int[] pagerIndex = {-1}; 
@Override 
public void onStart() { 


    h.postDelayed(new Runnable() { 
     public void run() { 
      pagerIndex[0]++; 
    if (pagerIndex[0] >= adapter.getCount()) { 
     pagerIndex[0] = 0; 
    } 

    viewPager.setCurrentItem(pagerIndex[0]); 
      runnable=this; 

      h.postDelayed(runnable, delay); 
     } 
    } 
    , delay); 

    super.onStart(); 
} 
+0

Cela a fonctionné merci! – Candy083

0

Vous pouvez commencer une tâche chronométrée en vous Fragment. N'avez pas encore vérifié ce code, mais il devrait fonctionner correctement. Créer votre tâche swipe:

final long delay = 2000; 
Handler handler = new Handler(); 
private int[] pagerIndex = {-1}; 
private Runnable swipeTask = new Runnable() { 
    @Override 
    public void run() { 

     pagerIndex[0]++; 
     if (pagerIndex[0] >= adapter.getCount()) { 
      pagerIndex[0] = 0; 
     } 

     viewPager.setCurrentItem(pagerIndex[0]); 
     handler.postDelayed(this, delay); 
    } 
}; 

Et dans votre fragment de onCreateView(), après la viewPager, adaptateur etc ont été mis,

task.run(); 
+0

PostDelayed a une erreur. Impossible de résoudre la méthode (anonyme java.lang .Runnable, long) – Candy083

+0

@ Candy083 Handler devrait être android.os.Handler, pas java.util.logging.Handler – Neeraj

+0

Oui, cela a fonctionné grâce! – Candy083