2017-09-15 4 views
0

타이머를 구현하는 방법 조각 내에서 자동으로 이미지 슬라이드? Fragment 및 CustomSwipeAdapter를 사용했는데 이미지가 자동으로 슬라이드되도록 타이머를 넣을 위치를 모른다. Fragment 또는 CustomSwipe Adpater에 있습니까?타이머를 구현하는 방법 조각 내에서 자동으로 이미지 슬라이드?

이것은 조각입니다 :

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

내가 '가장 무서운 문자열 배열 할당 할 수 본적 : O – Merlin

+0

나는 도서관을 사용했다. 이 하나 https://github.com/daimajia/AndroidImageSlider 여기 메모리 누수와 조심, 이미지 작업은 항상 어렵습니다. –

답변

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

감사했습니다! – Candy083

0

당신은 당신 Fragment에 시간 제한 작업을 시작할 수 있습니다. 이 코드를 아직 확인하지는 않았지만 정상적으로 작동합니다. 당신 슬쩍 작업을 만들기 은 :

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); 
    } 
}; 

그리고 당신의 조각의 onCreateView()의 viewPager 후, 어댑터 등이 설정되어있는

있다

task.run(); 
+0

postDelayed에 오류가 있습니다. 메서드를 해결할 수 없습니다 (익명 java.lang.Runnable, long) – Candy083

+0

@ Candy083 처리기는 java.util.logging.Handler가 아닌 android.os.Handler 여야합니다. – Neeraj

+0

예, 감사했습니다! – Candy083

관련 문제