相关疑难解决方法(0)

ViewPager PagerAdapter未更新视图

我正在使用兼容性库中的ViewPager.我已经巧妙地让它显示了几个我可以翻阅的视图.

但是,我很难弄清楚如何使用一组新视图更新ViewPager.

我已经试过各种事情就像调用mAdapter.notifyDataSetChanged(),mViewPager.invalidate()即使每次都创建我想用一个新的数据列表中的一个全新的适配器.

没有任何帮助,文本视图与原始数据保持不变.

更新: 我做了一个小测试项目,我几乎能够更新视图.我将粘贴下面的课程.

然而,似乎没有更新的是第二个视图,"B"仍然存在,按下更新按钮后应显示"Y".

public class ViewPagerBugActivity extends Activity {

    private ViewPager myViewPager;
    private List<String> data;

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

        data = new ArrayList<String>();
        data.add("A");
        data.add("B");
        data.add("C");

        myViewPager = (ViewPager) findViewById(R.id.my_view_pager);
        myViewPager.setAdapter(new MyViewPagerAdapter(this, data));

        Button updateButton = (Button) findViewById(R.id.update_button);
        updateButton.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                updateViewPager();
            }
        });
    }

    private void updateViewPager() {
        data.clear();
        data.add("X");
        data.add("Y");
        data.add("Z");
        myViewPager.getAdapter().notifyDataSetChanged();
    }

    private class MyViewPagerAdapter extends PagerAdapter {

        private …
Run Code Online (Sandbox Code Playgroud)

android android-viewpager

581
推荐指数
14
解决办法
35万
查看次数

从ViewPager中检索片段

我使用的是ViewPager连同FragmentStatePagerAdapter主办三个不同的片段:

  • [片段1]
  • [Fragment2]
  • [Fragment3]

当我想Fragment1ViewPagerFragmentActivity.

有什么问题,我该如何解决?

android android-fragments android-viewpager

240
推荐指数
8
解决办法
15万
查看次数

动态添加和删除视图到viewpager

(我想出了一个解决方案 - 请在下面的答案部分看到我的帖子.)

在我的应用程序中,用户将从他的数据的单个视图开始.我想添加一个ViewPager,并允许用户根据需要添加更多视图.我该怎么做呢?(我不想使用FragmentPagerAdapter.)

我已经阅读了无数的帖子和概述,但我仍然遗漏了一些东西.这是我认为我理解的:

MainActivity创建一个ViewPager和PagerAdapter:

ViewPager pager = null;
MainPagerAdapter adapter = null;
public void onCreate (Bundle savedInstanceState)
{
  super.onCreate (savedInstanceState);
  pager = new ViewPager (this);
  setContentView (pager);

  adapter = new MainPagerAdapter();
  pager.setAdapter (adapter); 

  View v0 = code_to_create_initial_view();
  adapter.add (v0, 0);      
}
Run Code Online (Sandbox Code Playgroud)

使用PagerAdapter提供视图集.为此,我似乎需要添加和删除视图的方法,就像这样; 显然需要更多的东西来告诉ViewPager的内容已经改变以及如何显示更改:

class MainPagerAdapter extends PagerAdapter
{
  // This holds all the currently displayable views, in order from left to right.
  private ArrayList<View> views = new ArrayList<View>();

  public void addView (View v, int position)
  {
    views.add (position, …
Run Code Online (Sandbox Code Playgroud)

android swipe android-viewpager

160
推荐指数
2
解决办法
17万
查看次数

ViewPager不重绘内容,保持/变为空白

我们在这里遇到了一个非常奇怪的ViewPager问题.我们在每个ViewPager页面上嵌入了列表,并在更新列表数据时在列表适配器和视图寻呼机适配器上触发notifyDataSetChanged.

我们观察到的是,有时候,页面不会更新其视图树,即保持空白,或者有时甚至在分页时消失.来回寻呼几次时,内容会突然重新出现.似乎Android在这里缺少视图更新.我还注意到,在使用层次结构查看器进行调试时,选择一个视图将始终使其重新出现,这显然是因为层次结构查看器强制所选视图重绘自身.

我不能以编程方式完成这项工作; 使列表视图无效,甚至整个视图寻呼机都无效.

这与compatibility-v4_r7库有关.我也尝试使用最新版本,因为它声称修复了与查看寻呼机相关的许多问题,但它更糟糕的是(例如,手势被打破,以至于它不会让我不再遍历所有页面.)

是否还有其他人遇到这些问题,或者您是否知道可能导致此问题的原因?

android android-viewpager

84
推荐指数
4
解决办法
5万
查看次数

Android Viewpager作为图像幻灯片库

我正在使用Jake的ViewPageIndicator,并希望像滑动图库一样显示图像.我可以开始的任何推荐链接.我已经实现了基本的viewpager,现在想要实现图像视图,如下所示

在此输入图像描述

是否可以使用ViewPageIndicator实现?

android android-viewpager actionbarsherlock

59
推荐指数
3
解决办法
16万
查看次数

如何禁用ViewPager从一个方向滑动

我想允许用户ViewPager仅从右向左滑动.因此,一旦他通过一个页面,他就无法回到它.如何才能做到这一点?

我试过这个解决方案:

public class CustomViewPager extends ViewPager {

float lastX = 0;

boolean lockScroll = false;

public CustomViewPager(Context context, AttributeSet attrs) {
    super(context, attrs);
}

public CustomViewPager(Context context) {
    super(context);
}

@Override
public boolean onTouchEvent(MotionEvent ev) {

    switch (ev.getAction()) {
    case MotionEvent.ACTION_DOWN:
        lastX = ev.getX();
        lockScroll = false;
        return super.onTouchEvent(ev);
    case MotionEvent.ACTION_MOVE:

        if (lastX > ev.getX()) {
            lockScroll = false;
        } else {
            lockScroll = true;
        }

        lastX = ev.getX();
        break;
    }

    lastX = ev.getX();

    if(lockScroll) …
Run Code Online (Sandbox Code Playgroud)

android swipe android-viewpager

29
推荐指数
2
解决办法
2万
查看次数

Android FragmentStatePagerAdapter

我正在使用这个例子使用FragmentStatePagerAdapter .

MyAdapter类实现如下:

public static class MyAdapter extends FragmentStatePagerAdapter {
        public MyAdapter(FragmentManager fm) {
            super(fm);
        }

        @Override
        public int getCount() {
            return NUM_ITEMS;
        }

        @Override
        public Fragment getItem(int position) {
            return ArrayListFragment.newInstance(position);
        }
    }
Run Code Online (Sandbox Code Playgroud)

ListFragment类包含以下创建新实例的方法:

    /**
     * Create a new instance of CountingFragment, providing "num"
     * as an argument.
     */
    static ArrayListFragment newInstance(int num) {
        ArrayListFragment f = new ArrayListFragment();

        // Supply num input as an argument.
        Bundle args = new Bundle();
        args.putInt("num", num);
        f.setArguments(args);

        return f;
    } …
Run Code Online (Sandbox Code Playgroud)

android android-fragments fragmentpageradapter

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

在恢复活动时刷新FragmentStatePagerAdapter上的图像

我创建了一个FragmentStatePagerAdapter用于提供小型图库的活动.但是,当活动恢复时(例如,从其他活动返回后),我无法刷新它.每次前两张图片都是空白的,只有在我将两张图片刷到一边后,它们才会刷新.我找到的答案都没有起作用(特别是压倒一切getItemPosition())

我这样设置:

mPagerAdapter = new PhotosPagerAdapter(getSupportFragmentManager());
mPager = (ViewPager) findViewById(R.id.photosViewPager);
mPager.setAdapter(mPagerAdapter);
Run Code Online (Sandbox Code Playgroud)

然后我有FragmentStatePagerAdapter类:

private class PhotosPagerAdapter extends FragmentStatePagerAdapter{

    public PhotosPagerAdapter(FragmentManager fm) {
        super(fm);
    }

    @Override
    public int getCount() {
        return photos.size();   
    }

    @Override
    public Fragment getItem(int position) {
        ImageFragment f = new ImageFragment(position);
        return f;
    }

    @Override
    public int getItemPosition(Object object) {
        throw new RuntimeException();
        //return POSITION_NONE;
    }

}
Run Code Online (Sandbox Code Playgroud)

您可能已经注意到,我在getItemPosition中抛出RuntimeException,因为我想检查它何时被调用.直到我添加一些包含我的图片的列表才会调用它.然后是ImageFragment类:

public class ImageFragment extends Fragment{

    int position;
    Bitmap mBitmap;
    int width;
    int height;
    ImageView img;

    public ImageFragment(){ …
Run Code Online (Sandbox Code Playgroud)

android android-fragments android-viewpager fragmentpageradapter

18
推荐指数
1
解决办法
3万
查看次数

如何刷新FragmentPagerAdapter的片段?

我有2个标签名为tab1(home)和tab2(profile)使用TabPageIndicatorFragmentPagerAdapter库.

在tab2中,我有一个名为"登录"的按钮(tab2膨胀abc.xml).

当用户单击"登录"按钮时,应用程序将在新活动中显示登录表单.登录后,活动结束,tab2的内容视图将更改(它显示用户的个人资料,因为它会膨胀xyz.xml).我怎样才能做到这一点?

public class MainActivity extends SherlockFragmentActivity {
    private static String[] TAB_NAMES = null;
    private Context context = this;
    private static FragmentPagerAdapter adapter ;
    @Override
    protected void onCreate(Bundle savedInstanceState) {

        if (TAB_NAMES == null) {
            TAB_NAMES = new String[] {
                    getResources().getString(R.string.tab_home),
                    getResources().getString(R.string.tab_profile) };
        }
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        adapter = new TabsAdapter(
                getSupportFragmentManager());

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

        pager.setAdapter(adapter);


        TabPageIndicator indicator = (TabPageIndicator) findViewById(R.id.indicator);
        indicator.setViewPager(pager);

    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        MenuInflater …
Run Code Online (Sandbox Code Playgroud)

android android-fragments android-tabs

13
推荐指数
2
解决办法
4万
查看次数

如何更新ViewPager内容?

我有PageAdapter一周中的几天,对于每个寻呼机,我有相同的布局.我的问题是如何在更改日期时更新正确的listView.当我改变传呼机创建新的寻呼机并删除其他时,当发生这种情况时,我的列表视图指向新寻呼机而不是当前.例如,在wedneyday我保存列表视图的参考,当我在星期二改变周一寻呼机是创建和周四被删除,我的参考点,以最后一页创建(星期一),但我在星期二.

我的页面适配器:

ListView lvwConfig;

@Override
public Object instantiateItem(View pager, int position) {
    LayoutInflater inflater = (LayoutInflater) mContext
        .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    View v = inflater.inflate(R.layout.pager_layout, null);
    lvwConfig = (ListView) v.findViewById(R.id.lvwConfig);
    ((ViewPager) pager).addView(v, 0);

    return v;
}
Run Code Online (Sandbox Code Playgroud)

我想ListView总是指向当前项目的listview.

android listview indicator pager android-viewpager

10
推荐指数
2
解决办法
5万
查看次数