相关疑难解决方法(0)

动态更新ViewPager?

我无法更新ViewPager中的内容.

一个问题:FragmentPagerAdapter类中的方法instantiateItem()和getItem()的关系和正确用法是什么?

我只使用getItem()实例化并返回我的片段:

@Override
public Fragment getItem(int position) {
    return new MyFragment(context, paramters);
}
Run Code Online (Sandbox Code Playgroud)

这很好用(但据说我不能改变内容).

所以我发现了这个:ViewPager PagerAdapter没有更新View

特别是在其中讨论了方法instantiateItem():

"我的方法是对instantiateItem()方法中的任何实例化视图使用setTag()方法"

所以现在我想实现instantiateItem()才能做到这一点.但我不知道我必须返回那里(return是Object)和getItem(int position)的关系是什么?

目前我正在使用getItem来实例化Fragment,这是错的吗?但是,我是否必须将片段放在实例变量中,或者根本不实现getItem()......?我只是不明白.

我试过阅读参考资料:

  • public abstract Fragment getItem(int position)

    返回与指定位置关联的片段.

  • public Object instantiateItem(ViewGroup容器,int位置)

    创建给定位置的页面.适配器负责将视图添加到此处给出的容器,但它必须确保在从finishUpdate(ViewGroup)返回时完成此操作.参数

    容器包含将在其中显示页面的View.position要实例化的页面位置.

    返回

    返回表示新页面的Object.这不需要是View,但可以是页面的其他容器.

......但我仍然不明白它们是如何相关的以及我必须做些什么.

这是我的代码.我正在使用支持包v4.

ViewPagerTest

public class ViewPagerTest extends FragmentActivity {
    private ViewPager pager;
    private MyFragmentAdapter adapter; 

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.pager1);

        pager = (ViewPager)findViewById(R.id.slider);

        String[] data = {"page1", "page2", "page3", "page4", "page5", "page6"};

        adapter = new MyFragmentAdapter(getSupportFragmentManager(), 6, this, …
Run Code Online (Sandbox Code Playgroud)

android android-fragments android-viewpager

303
推荐指数
7
解决办法
26万
查看次数

ViewPager禁用滑动到某个方向

我想禁用滑动,但仅限于右侧.我发现在工作液这个答案.不幸的是,这复制了整个ViewPager源以实现目标.是否有任何方法只是继承现有的类而不是重复?

android swipe android-viewpager

17
推荐指数
4
解决办法
3万
查看次数

Viewpage停止向某个方向滑动

如何阻止viewpager仅向一个方向滚动.例如,仅允许向右滑动,但不允许滑动到左侧.我绝对卡住,任何帮助将不胜感激.要注意我需要让它适用于Android 2.2版,所以我使用了兼容性库来查看ViewPager.

提前致谢

android android-viewpager

5
推荐指数
1
解决办法
5366
查看次数

一方面ViewPager只能刷卡

我的应用程序中有一个ViewPager,我想在任何时候禁用/允许滑动到右侧.viewpager中的每个视图都包含ListView.我怎样才能做到这一点?我试图用这种方式做到这一点:

private int oldX;
private int deltaX = 0;

@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
    if (motionEvent.getAction() == MotionEvent.ACTION_MOVE || motionEvent.getAction() == MotionEvent.ACTION_DOWN) {
        int newX = (int) motionEvent.getX();
        deltaX = oldX - newX;
        oldX = newX;
    }
    if (motionEvent.getAction() == MotionEvent.ACTION_UP) {
        oldX = 0;
    }
    return deltaX < 0;        
}
Run Code Online (Sandbox Code Playgroud)

但观点仍然偏向右侧.有人在解决同样的问题吗?

android android-viewpager

4
推荐指数
1
解决办法
5980
查看次数