Android ViewPager中包含片段的ListView
当前我有一个ViewPager,它有3个不同的选项卡(对等、同步和共享)。 在对等片段中,它包含一个带有可单击项的列表视图。OnItemClick我想打开一个新片段,它将显示所选项目的详细信息, 但我不知道如何正确地实现这个功能 活动:Android ViewPager中包含片段的ListView,android,android-fragments,android-viewpager,Android,Android Fragments,Android Viewpager,当前我有一个ViewPager,它有3个不同的选项卡(对等、同步和共享)。 在对等片段中,它包含一个带有可单击项的列表视图。OnItemClick我想打开一个新片段,它将显示所选项目的详细信息, 但我不知道如何正确地实现这个功能 活动: protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.file_shar
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.file_sharing_activity);
// Tabs stuff ...
this.tabsAdapter = new TabsPagerAdapter(this.getSupportFragmentManager());
viewPager = (ViewPager) findViewById(R.id.pager);
viewPager.setAdapter(this.tabsAdapter);
// Create tabs bar
final ActionBar actionBar = getActionBar();
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
// Create tab fragments
this.peerListFragment = new PeerListFragment();
this.syncFragment = new SyncFragment();
this.shareFragment = new ShareFragment();
// Create tabs
actionBar.addTab(actionBar.newTab().setText("Peers").setTabListener(this.peerListFragment));
actionBar.addTab(actionBar.newTab().setText("Sync").setTabListener(this.syncFragment));
actionBar.addTab(actionBar.newTab().setText("Share").setTabListener(this.shareFragment));
viewPager.setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() {
@Override
public void onPageSelected(int position) {
// When swiping between pages, select the
// corresponding tab.
getActionBar().setSelectedNavigationItem(position);
}
});
try {
ProgramController.getInstance().initializeProgram(this);
} catch (Exception e) {}
}
TabPagerAdapter:
private class TabsPagerAdapter extends FragmentPagerAdapter{
public TabsPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
switch (position) {
case 0:
return peerListFragment;
case 1:
return syncFragment;
case 2:
return shareFragment;
default:
return null;
}
}
@Override
public int getCount() {
return NB_TABS;
}
}
皮尔利斯特碎片
public class PeerListFragment extends Fragment implements ActionBar.TabListener{
ListView peerListView;
public PeerListFragment(){
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_peer_list, container, false);
peerListView = (ListView) view.findViewById(R.id.list_peer);
PeerListAdapter adapter = new PeerListAdapter(getActivity());
peerListView.setAdapter(adapter);
peerListView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
//Display detail fragment here
}
});
return view;
}
公共类PeerListFragment扩展片段实现ActionBar.TabListener{
ListView-peerListView;
公共PeerListFragment(){
}
@凌驾
创建视图上的公共视图(布局、充气机、视图组容器、,
Bundle savedInstanceState){
视图=充气机。充气(R.layout.fragment\u peer\u list,container,false);
peerListView=(ListView)view.findViewById(R.id.list\u peer);
PeerListAdapter=新的PeerListAdapter(getActivity());
setAdapter(适配器);
setOnItemClickListener(新的OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父级、视图、,
内部位置,长id){
//在这里显示细节片段
}
});
返回视图;
}
通常,您的活动中会有一个方法,该方法将从onItemClick()
调用以显示详细视图,即showdail(itemId)
。活动
实际上会处理到详细视图的转换
现在,由于您的ViewPager
处于活动中而不是片段中,因此您有两种选择:
- 拥有一个
DetailActivity
,该活动以当前活动的意图开始(最简单的选择,但对于平板电脑来说灵活性较低)
- 重写
活动
以将视图与查看页面
放在片段
中。然后活动
将用细节片段替换当前包含查看页面
的片段。(更难的选项,但您可以在平板电脑中并排显示)
现在,您的ViewPager
已在您的活动布局中。为了使片段正常工作,您的活动布局将只有一个或两个子布局作为片段容器,然后ViewPager
将进入片段布局。只需启动显示详细信息的新活动。否?