我正在创建一个应用程序,您首先必须从列表中选择一个项目。然后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;全屏显示新活动。我需要滑动部分的帮助。
答案 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();
}
}
}