从列表视图中选择项目,然后滑动以查看其他活动

时间:2014-09-24 19:56:10

标签: android eclipse android-viewpager swipe

我正在创建一个应用程序,您首先必须从列表中选择一个项目。然后onItemClick启动一个显示图像的新活动。我现在希望能够执行滑动操作以更改为新活动或片段。新活动与列表视图无关,即我不想滑动以显示列表视图中的下一个项目。我想展示一个全新的活动。无论您在列表视图中选择哪个项目,此新活动对所有项目都是相同的。

我一直在尝试使用viewpager,我猜这是吸毒的。但是找不到一个好的指南。

我是否在单个列表项查看器布局中添加此项?或者我应该创建一个新的java类并将我的单个列表项活动导入该类?

<android.support.v4.view.ViewPager
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/pager"
android:layout_width="match_parent"
android:layout_height="match_parent" />

如果您在代码中回答,请在代码内或外部添加注释。所以它很容易理解,因为我不知道代码里面发生的所有事情。谢谢你的推荐。

澄清:从列表中选择项目 - &gt;推出了一项新活动--swipe - &gt;全屏显示新活动。我需要滑动部分的帮助。

1 个答案:

答案 0 :(得分:0)

我不完全确定我理解你的要求,但听起来你想要使用Fragments而不是全面的活动。您可以使用titlepageindicator类来控制片段之间的滑动。 viewpagerindicator库与viewpagers一起使用以允许在片段之间导航。如果您需要有关其工作原理的详细信息,请与我们联系。

以下是有关使用viewpagerindicator的代码示例:

public class EventTabsFragment extends Fragment {
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    mTitles = new ArrayList<String>();

    mTitles.add(getString(R.string.events_tabs_title_upcoming));
    mTitles.add(getString(R.string.events_tabs_title_recommended));
    mTitles.add(getString(R.string.events_tabs_title_local));
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.fragment_tabbed, null, false);

    FragmentPagerAdapter adapter = new EventTabsAdapter(getChildFragmentManager());
    ViewPager pager = (ViewPager)view.findViewById(R.id.pager);
    if(pager!=null) {
        pager.setAdapter(adapter);
    }

    //note: the type of this indicator is dependent on the style of paging you want.  
    //the library I mentioned has multiple options in this regard
    TabPageIndicator indicator = (TabPageIndicator)view.findViewById(R.id.indicator);
    indicator.setViewPager(pager);

        @Override
        public void onPageScrolled(int arg0, float arg1, int arg2) {
            // TODO Auto-generated method stub

        }

        @Override
        public void onPageScrollStateChanged(int arg0) {
            // TODO Auto-generated method stub

        }
    });
    return view;
}

class EventTabsAdapter extends FragmentPagerAdapter {
    public EventTabsAdapter(FragmentManager fm) {
        super(fm);
    }

    @Override
    public Fragment getItem(int position) {

        Fragment fragment = null;

        switch(position){

        case 0:
            fragment = EventFragment.newInstance(EventFragment.EVENTS_TYPE_UPCOMING);
            break;
        case 1:
            fragment = EventFragment.newInstance(EventFragment.EVENTS_TYPE_RECOMMENDED);
            break;
        case 2:
            fragment = EventFragment.newInstance(EventFragment.EVENTS_TYPE_LOCAL);
        default:
            break;
        }

        return fragment;
    }

    @Override
    public CharSequence getPageTitle(int position) {
        return mTitles.get(position % mTitles.size()).toUpperCase();
    }

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

}