2014-09-24 28 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

相關問題