ViewPager.SimpleOnPageChangeListener不起作用 [英] ViewPager.SimpleOnPageChangeListener Does Not Function
问题描述
我有一个ViewPager / PagerAdapter应该让我通过一系列页脚图像以改变所述站(通过改变串PLAYLIST)滑动
...但是当我通过刷卡的图像 - 好像没有什么
任何建议都大大AP preciated!
来源:
公共类家庭扩展YouTubeBaseActivity工具VideoClickListener { 私人VideosListView的ListView;
私人ActionBarDrawerToggle actionBarDrawerToggle;
公共静态最后弦乐API_KEY =XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX;
公共静态最后弦乐VIDEO_ID =o7VVHhK9zf0;
私人INT mCurrentTabPosition = NO_CURRENT_POSITION;
私有静态最终诠释NO_CURRENT_POSITION = -1;
私人DrawerLayout drawerLayout;
私人的ListView drawerListView;
私有String [] drawerListViewItems;
私人ViewPager mPager;
滚动型mainScrollView;
按钮fav_up_btn1;
按钮fav_dwn_btn1;
字符串标记=DEBUG这个;
字符串PLAYLIST =EminemVEVO;
私人OnPageChangeListener mPageChangeListener; @覆盖
公共无效的onCreate(捆绑savedInstanceState){
super.onCreate(savedInstanceState);
的setContentView(R.layout.home);
最后的动作条动作条= getActionBar();
ViewPager viewPager =(ViewPager)findViewById(R.id.view_pager);
ImagePagerAdapter适配器=新ImagePagerAdapter();
viewPager.setAdapter(适配器); actionBar.setCustomView(R.layout.actionbar_custom_view_home);
actionBar.setDisplayShowTitleEnabled(假);
actionBar.setDisplayShowCustomEnabled(真);
drawerListViewItems = getResources()getStringArray(R.array.items)。
drawerListView =(ListView控件)findViewById(R.id.left_drawer);
drawerListView.setAdapter(新ArrayAdapter<串GT;(这一点,
R.layout.drawer_listview_item,drawerListViewItems)); drawerLayout =(DrawerLayout)findViewById(R.id.drawer_layout);
actionBarDrawerToggle =新ActionBarDrawerToggle(这一点,/ *主机活动* /
drawerLayout,/ * DrawerLayout对象* /
R.drawable.ic_drawer,/ *导航抽屉图标来取代上插入符* /
R.string.drawer_open,/ *打开的抽屉的描述* /
R.string.drawer_close / *关闭抽屉的描述* /
);
drawerLayout.setDrawerListener(actionBarDrawerToggle); getActionBar()setDisplayHomeAsUpEnabled(真)。 drawerLayout.setDrawerShadow(R.drawable.drawer_shadow,
GravityCompat.START); mainScrollView =(滚动型)findViewById(R.id.groupScrollView);
ListView控件=(VideosListView)findViewById(R.id.videosListView);
listView.setOnVideoClickListener(本);
新GetYouTubeUserVideosTask(ResponseHandler所,PLAYLIST).execute();
} 处理器ResponseHandler所=新的处理程序(){
@覆盖
公共无效的handleMessage(消息MSG){
populateListWithVideos(MSG);
};
}; 私人无效populateListWithVideos(消息MSG){
库lib =(库)msg.getData()得到(
GetYouTubeUserVideosTask.LIBRARY);
listView.setVideos(lib.getVideos());
} @覆盖
保护无效的onStop(){
ResponseHandler所= NULL;
super.onStop();
} @覆盖
公共无效onVideoClicked(视频短片){
意向意图=新意图(Intent.ACTION_VIEW);
intent.setData(Uri.parse(video.getUrl()));
startActivity(意向);
} @覆盖
公共无效onConfigurationChanged(配置NEWCONFIG){
super.onConfigurationChanged(NEWCONFIG);
actionBarDrawerToggle.onConfigurationChanged(NEWCONFIG);
} @覆盖
公共布尔onCreateOptionsMenu(菜单菜单){
//充气操作栏中使用的菜单项
MenuInflater吹气= getMenuInflater();
inflater.inflate(R.menu.main,菜单);
返回super.onCreateOptionsMenu(菜单);
} @覆盖
公共布尔onOptionsItemSelected(菜单项项){
如果(actionBarDrawerToggle.onOptionsItemSelected(项目)){
返回true;
}
返回super.onOptionsItemSelected(项目);
} 私有类ImagePagerAdapter扩展PagerAdapter {
公共ImagePagerAdapter(){
超(); } 私人诠释[] = mImages新INT [] {R.drawable.selstation_up_btn,
R.drawable.classical_up_btn,R.drawable.country_up_btn,
R.drawable.dance_up_btn,R.drawable.hiphop_up_btn}; @覆盖
公众诠释的getCount(){
返回mImages.length;
} @覆盖
公共布尔isViewFromObject(查看视图,Object对象){
返回查看==((ImageView的)对象);
} @覆盖
公共对象instantiateItem(ViewGroup中的容器,INT位置){
上下文的背景下= Home.this;
ImageView的ImageView的=新ImageView的(上下文); imageView.setImageResource(mImages [位置]);
((ViewPager)容器).addView(ImageView的,0);
返回ImageView的;
} @覆盖
公共无效destroyItem(ViewGroup中的容器,INT位置,Object对象){
((ViewPager)容器).removeView((ImageView的)对象);
} 私人最终ViewPager.SimpleOnPageChangeListener mPageChangeListener =新ViewPager.SimpleOnPageChangeListener(){ @覆盖
公共无效使用onPageSelected(最终诠释位置){
onTabChanged(mPager.getAdapter(),mCurrentTabPosition,位置);
mCurrentTabPosition =位置; }
}; 保护无效onTabChanged(最终PagerAdapter适配器,
最终诠释oldPosition,最终诠释在newPosition){ 如果(oldPosition>在newPosition){
// 左到右
}其他{
// 右到左
字符串PLAYLIST =TimMcGrawVEVO; 查看VG = findViewById(R.layout.home);
vg.invalidate();
}
最后ViewPager viewPager =(ViewPager)findViewById(R.id.view_pager); viewPager.setOnPageChangeListener(新OnPageChangeListener(){ INT oldPos = viewPager.getCurrentItem(); @覆盖
公共无效onPageScrolled(INT位置,浮ARG1,ARG2 INT){ 如果(位置> oldPos){
//向右移动 }否则如果(仓位< oldPos){
//向左移动
字符串PLAYLIST =TimMcGrawVEVO; 查看VG = findViewById(R.layout.home);
vg.invalidate();
}
} @覆盖
公共无效onPageScrollStateChanged(INT为arg0){
// TODO自动生成方法存根 } @覆盖
公共无效使用onPageSelected(INT为arg0){
// TODO自动生成方法存根 } }); }
}
}
您正在不添加监听到你的寻呼机。
您需要调用 setOnPageChangeListener(mPageChangeListener)
您pagerAdapter。
例如在构造函数:
公共ImagePagerAdapter(){
超();
setOnPageChangeListener(mPageChangeListener);
}
有关更多信息,请查看文档。 http://developer.android.com/reference/android/support /v4/view/ViewPager.html
I have a ViewPager / PagerAdapter which should allow me to swipe through a series of footer images in order to change the station (by changing the string PLAYLIST):
...however when I swipe through the images - nothing seems to happen.
Any suggestions are greatly appreciated!
SOURCE:
public class Home extends YouTubeBaseActivity implements
VideoClickListener {
private VideosListView listView;
private ActionBarDrawerToggle actionBarDrawerToggle;
public static final String API_KEY = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
public static final String VIDEO_ID = "o7VVHhK9zf0";
private int mCurrentTabPosition = NO_CURRENT_POSITION;
private static final int NO_CURRENT_POSITION = -1;
private DrawerLayout drawerLayout;
private ListView drawerListView;
private String[] drawerListViewItems;
private ViewPager mPager;
ScrollView mainScrollView;
Button fav_up_btn1;
Button fav_dwn_btn1;
String TAG = "DEBUG THIS";
String PLAYLIST = "EminemVEVO";
private OnPageChangeListener mPageChangeListener;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.home);
final ActionBar actionBar = getActionBar();
ViewPager viewPager = (ViewPager) findViewById(R.id.view_pager);
ImagePagerAdapter adapter = new ImagePagerAdapter();
viewPager.setAdapter(adapter);
actionBar.setCustomView(R.layout.actionbar_custom_view_home);
actionBar.setDisplayShowTitleEnabled(false);
actionBar.setDisplayShowCustomEnabled(true);
drawerListViewItems = getResources().getStringArray(R.array.items);
drawerListView = (ListView) findViewById(R.id.left_drawer);
drawerListView.setAdapter(new ArrayAdapter<String>(this,
R.layout.drawer_listview_item, drawerListViewItems));
drawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
actionBarDrawerToggle = new ActionBarDrawerToggle(this, /* host Activity */
drawerLayout, /* DrawerLayout object */
R.drawable.ic_drawer, /* nav drawer icon to replace 'Up' caret */
R.string.drawer_open, /* "open drawer" description */
R.string.drawer_close /* "close drawer" description */
);
drawerLayout.setDrawerListener(actionBarDrawerToggle);
getActionBar().setDisplayHomeAsUpEnabled(true);
drawerLayout.setDrawerShadow(R.drawable.drawer_shadow,
GravityCompat.START);
mainScrollView = (ScrollView) findViewById(R.id.groupScrollView);
listView = (VideosListView) findViewById(R.id.videosListView);
listView.setOnVideoClickListener(this);
new GetYouTubeUserVideosTask(responseHandler, PLAYLIST).execute();
}
Handler responseHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
populateListWithVideos(msg);
};
};
private void populateListWithVideos(Message msg) {
Library lib = (Library) msg.getData().get(
GetYouTubeUserVideosTask.LIBRARY);
listView.setVideos(lib.getVideos());
}
@Override
protected void onStop() {
responseHandler = null;
super.onStop();
}
@Override
public void onVideoClicked(Video video) {
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse(video.getUrl()));
startActivity(intent);
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
actionBarDrawerToggle.onConfigurationChanged(newConfig);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu items for use in the action bar
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.main, menu);
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (actionBarDrawerToggle.onOptionsItemSelected(item)) {
return true;
}
return super.onOptionsItemSelected(item);
}
private class ImagePagerAdapter extends PagerAdapter {
public ImagePagerAdapter() {
super();
}
private int[] mImages = new int[] { R.drawable.selstation_up_btn,
R.drawable.classical_up_btn, R.drawable.country_up_btn,
R.drawable.dance_up_btn, R.drawable.hiphop_up_btn };
@Override
public int getCount() {
return mImages.length;
}
@Override
public boolean isViewFromObject(View view, Object object) {
return view == ((ImageView) object);
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
Context context = Home.this;
ImageView imageView = new ImageView(context);
imageView.setImageResource(mImages[position]);
((ViewPager) container).addView(imageView, 0);
return imageView;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
((ViewPager) container).removeView((ImageView) object);
}
private final ViewPager.SimpleOnPageChangeListener mPageChangeListener = new ViewPager.SimpleOnPageChangeListener() {
@Override
public void onPageSelected(final int position) {
onTabChanged(mPager.getAdapter(), mCurrentTabPosition, position);
mCurrentTabPosition = position;
}
};
protected void onTabChanged(final PagerAdapter adapter,
final int oldPosition, final int newPosition) {
if (oldPosition > newPosition) {
// left to right
} else {
// right to left
String PLAYLIST = "TimMcGrawVEVO";
View vg = findViewById(R.layout.home);
vg.invalidate();
}
final ViewPager viewPager = (ViewPager) findViewById(R.id.view_pager);
viewPager.setOnPageChangeListener(new OnPageChangeListener() {
int oldPos = viewPager.getCurrentItem();
@Override
public void onPageScrolled(int position, float arg1, int arg2) {
if (position > oldPos) {
// Moving to the right
} else if (position < oldPos) {
// Moving to the Left
String PLAYLIST = "TimMcGrawVEVO";
View vg = findViewById(R.layout.home);
vg.invalidate();
}
}
@Override
public void onPageScrollStateChanged(int arg0) {
// TODO Auto-generated method stub
}
@Override
public void onPageSelected(int arg0) {
// TODO Auto-generated method stub
}
});
}
}
}
You're not adding the Listener to your Pager.
You need to call setOnPageChangeListener(mPageChangeListener)
on your pagerAdapter.
For example in the Constructor:
public ImagePagerAdapter(){
super();
setOnPageChangeListener(mPageChangeListener);
}
for more info, check the docs. http://developer.android.com/reference/android/support/v4/view/ViewPager.html
这篇关于ViewPager.SimpleOnPageChangeListener不起作用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!