【问题标题】:ViewPager can not implement Case Statement or stringArrayViewPager 无法实现 Case Statement 或 stringArray
【发布时间】:2013-12-19 16:46:55
【问题描述】:

我有一个 viewPager,我想将它与 case 语句或 stringArray 结合使用(两者都显示在下面的源代码中)但是我似乎无法让它们一起工作。目前,我正在尝试显示 4 个带有不同消息的 toast 以进行测试,但是在滑动 viewPager 时我似乎看不到它们。

private int mCurrentTabPosition = NO_CURRENT_POSITION;
private static final int NO_CURRENT_POSITION = -1;
int imageArray[];
private OnPageChangeListener mPageChangeListener;
ImagePagerAdapter adapter = new ImagePagerAdapter();
private String[] stringArray = new String[] { "Value1", "Value2",
        "Value3", "Value4", "Value5‎" };

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.home);
    final ViewPager mPager = (ViewPager) findViewById(R.id.view_pager);
    adapter.notifyDataSetChanged();
    mPager.setAdapter(adapter);

    mPager.setOnPageChangeListener(new OnPageChangeListener() {

        @Override
        public void onPageSelected(int pos) {

            String playlist1 = stringArray[pos];
            if (playlist != null) {
                new GetYouTubeUserVideosTask(responseHandler, playlist1)
                        .execute();

            }
        }

        @Override
        public void onPageScrolled(int arg0, float arg1, int arg2) {

        }

        @Override
        public void onPageScrollStateChanged(int pos) {

        }
    });

    mPageChangeListener = new ViewPager.SimpleOnPageChangeListener() {

        @Override
        public void onPageSelected(int position) {
            onTabChanged(mPager.getAdapter(), mCurrentTabPosition, position);
            int focusedPage = 0;
            focusedPage = position;

            switch (focusedPage) {
            case 0: { Toast.makeText(Home.this, "Case 0", Toast.LENGTH_LONG).show();
                break;
            }
            case 1: { Toast.makeText(Home.this, "Case 1", Toast.LENGTH_LONG).show();
                break;
            }
            case 2: { Toast.makeText(Home.this, "Case 2", Toast.LENGTH_LONG).show();
                break;
            }
            case 3: { Toast.makeText(Home.this, "Case 3", Toast.LENGTH_LONG).show();
                break;
            }
            }

        }

        private void onTabChanged(PagerAdapter adapter,
                int mCurrentTabPosition, int position) {

            Log.d("PK", "Tab changed");
            // TODO Auto-generated method stub

        }
    };
}

/* The click listener for ListView in the navigation drawer */
private class DrawerItemClickListener implements
        ListView.OnItemClickListener {
    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position,
            long id) {
        selectItem(position);
    }
}

private void selectItem(int position) {

    if (position == 1) {
        Toast.makeText(Home.this, "Item 1", Toast.LENGTH_LONG).show();
    } else if (position == 2) {
        Toast.makeText(Home.this, "Item 2", Toast.LENGTH_LONG).show();
    } else {
        Toast.makeText(Home.this, "Item 3", Toast.LENGTH_LONG).show();
    }

    // update selected item and title, then close the drawer
    drawerListView.setItemChecked(position, true);
    drawerLayout.closeDrawer(drawerListView);
}


private class ImagePagerAdapter extends PagerAdapter implements
        ViewPager.OnPageChangeListener {
    public ImagePagerAdapter(Activity act, int[] mImages,
            String[] stringArra) {
        imageArray = mImages;
        activity = act;
        setStringArray(stringArra);
    }

    public ImagePagerAdapter() {
        super();

    }

    private int[] mImages = new int[] { R.image1,
            R.drawable.image2, R.drawable.image3,
            R.drawable.image4, R.drawable.image5 };

    @Override
    public int getCount() {
        return mImages.length;
    }

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



    public void destroyItem(ViewGroup container, int position, Object object) {
        ((ViewPager) container).removeView((ImageView) object);
    }



    @Override
    public void onPageScrollStateChanged(int arg0) {
        // TODO Auto-generated method stub
        Log.d("pk", "onPageScrollStateChanged");
    }

    @Override
    public void onPageScrolled(int arg0, float arg1, int arg2) {
        // TODO Auto-generated method stub
        Log.d("pk", "onPageScrolled");
    }

    @Override
    public void onPageSelected(int arg0) {
        // TODO Auto-generated method stub
        Log.d("pk", "onPageSelected");
    }

    public String[] getStringArray() {
        return stringArray;
    }

    public void setStringArray(String[] stringArray) {
        // this.stringArray = stringArray;
    }
}

}

【问题讨论】:

  • 为什么两次mPager.setOnPageChangeListener(mPageChangeListener); mPager.setOnPageChangeListener(new OnPageChangeListener() {?。摆脱一个。
  • 我做到了(谢谢 - 我更新了上面的代码以反映我的机器上的内容)但是在滑动 viewPager 时我仍然没有看到 toast
  • 我删除了 setOnPageChangeListener 的另一个实例 - 我做错了什么?
  • 你的开关盒在这里 mPageChangeListener = new ViewPager.SimpleOnPageChangeListener() { 而你有这个 mPager.setOnPageChangeListener(new OnPageChangeListener() { 没有意义

标签: java android android-viewpager switch-statement case


【解决方案1】:

使用下面的

mPager.setOnPageChangeListener(new OnPageChangeListener() {

        @Override
        public void onPageSelected(int pos) {

            switch (pos) {
        case 0: Toast.makeText(Home.this, "Case 0", Toast.LENGTH_LONG).show();
            break;

        case 1:  Toast.makeText(Home.this, "Case 1", Toast.LENGTH_LONG).show();
            break;

        case 2:  Toast.makeText(Home.this, "Case 2", Toast.LENGTH_LONG).show();
            break;

        case 3:  Toast.makeText(Home.this, "Case 3", Toast.LENGTH_LONG).show();
            break;

        }
            String playlist1 = stringArray[pos];
            if (playlist != null) {
                new GetYouTubeUserVideosTask(responseHandler, playlist1)
                        .execute();

            }
        }

        @Override
        public void onPageScrolled(int arg0, float arg1, int arg2) {

        }

        @Override
        public void onPageScrollStateChanged(int pos) {

        }
    });

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-12-26
  • 2016-04-12
  • 1970-01-01
  • 2010-10-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多