2014-09-24 21 views
0

我正在创建一个应用程序,您首先必须从列表中选择一个项目。 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" /> 

如果您在代码中回答,请在代码内部或外部添加注释。所以它很容易遵循,因为我没有意识到代码内的所有事情。感谢advace。

澄清:从列表中选择项目 - >启动新活动--swipe - >全屏显示新活动。我需要滑动部分的帮助。

回答

0

我不完全确定我明白你在问什么,但这听起来像你想要与Fragments而不是完整的活动。您可以使用titlepageindicator类来控制片段之间的滑动。 viewpagerindicator库与查看器一起工作以允许片段之间的导航。让我知道你是否需要更多关于这个如何工作的细节。

下面是关于一个代码示例使用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(); 
    } 
} 

} 
+0

如何转变我的活动变成一个片段?我只是改变:“公共类SingleListItem扩展活动{}”为“公共类SingleListItem延伸FragmentActivity {}”? – Rasmus 2014-09-24 20:43:39

+0

基本上就是这样。您仍然需要一个基本活动来管理这些片段。在上面的示例代码中,您可以看到该视图正在使用运行更多片段的片段。尽管这个EventTabsFragment仍然在基本活动中运行。 注意:主要活动将处理片段之间的导航。为了正确执行此操作,您需要在主要活动中设置委派。如果您对此不熟悉,请告诉我。 – Hiero7 2014-09-24 23:11:40

相关问题