android - 如何将计时器实现为 fragment 内的自动图像幻灯片?

标签 android android-fragments android-adapter timertask

如何将计时器实现为在 fragment 内自动滑动图像? 我使用了 Fragment 和 CustomSwipeAdapter,但我不知道将计时器放在哪里才能使图像自动滑动。它是在 Fragment 中还是在 CustomSwipe Adpater 中?

这是 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;
    }}

自定义滑动适配器

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

}

最佳答案

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

关于android - 如何将计时器实现为 fragment 内的自动图像幻灯片?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46244161/

相关文章:

android - 指定 FEATURE_NO_TITLE 后 DialogFragment 宽度缩小

android - 无法从静态上下文引用非静态方法 getChildFragmentManager()

android - 有没有办法将两个 TextView 添加到 arrayadapter

Android - 为 ListView 填充适配器的异步任务

java - 自定义 ListView 中的弹出菜单

android - 向 ListView 添加第二个过滤器

java - 将类型为 class 的变量分配给扩展声明的变量类型的不同类

android4.0 :Unable to instantiate application android. app.Application : java. lang.NullPointerException

android - 停止 dpad 焦点超出 android 中的当前 fragment

android - 处理选项卡、操作栏、 Activity 和 fragment