2010-05-02 58 views
2

我想为我的应用程序设置一些类似菜单的导航器。如何使用ListView和ViewFlipper在Android应用中导航用户?

在主页面有一个listView,它包含两个项目,点击每个项目都会用ViewFlipper显示它的子视图,如果用户点击后退按钮,他会再次返回主页。

问题是如何使它,我只能使用ViewFlipper翻转到下一个屏幕或prev屏幕,如何管理这些子视图在这里?如何把他们放在我的布局XML文件?

回答

3

这里遵循psudo的方式来做到这一点。

//在OnCreate中,向您的列表视图添加一个点击监听器,使视图翻转到下一个视图。

viewflipper = (ViewFlipper) findViewById(R.id.viewflipper); 
listview = (ListView) findViewById(R.id.listview); 


listview.setOnItemClickListener(new OnItemClickListener(){ 
    public void onItemClick(AdapterView<?> a, View v, int position, long id) { 
    viewflipper.showNext(); 

}); 

//覆盖您的onKeyDown Activty处理后退按钮单击。

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if (keyCode == KeyEvent.KEYCODE_BACK) { 
     if(viewflipper.getVisibleChild() != 0){ 
      viewflipper.showPrevious(); 
      return true; 
     } 
    } 
    return super.onKeyDown(keyCode, event); 
} 

// XML的viewflipper圣维特列表视图为“第一页”和一个简单的TextView“第二页”

<ViewFlipper android:id="@+id/viewflipper" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     > 
     <ListView android:id="@+id/listview" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
     /> 
     <TextView android:id="@+id/secondview" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:text="This is the second view" 
     /> 
</ViewFlipper> 
+2

那你链接到一个特定例子是有点老(2008年8月) ,更不用说从原来的AndroidGuys文章中剔除。以下是该帖子中保持更新的两个示例的链接:http://github.com/commonsguy/cw-android/tree/master/Fancy/Flipper1/ http://github.com/commonsguy/ cw-android/tree/master/Fancy/Flipper2/ – CommonsWare 2010-05-02 11:53:29

+0

感谢您的回答。但我需要的是一点点复杂。因为导航不总是线性的,例如,HOME-> A | B | C - >如果选择了A - > a1 | a2 |,如果选择了B - > b1 | b2。如果我有所有预定义的A | B | C | a1 | a2 | b1 | b2视图,我如何将所有这些视图放入该ViewFlipper中,或者如果其中一些像a2,b1是通过从Internet获取数据动态创建的,我呢? – virsir 2010-05-03 02:08:24

+0

如果我理解正确,可以将2个listviews添加到viewflipper。第一个列表视图显示A,B,C,当你点击任何一个翻转到第二个列表视图的子项a1,a2,a3 ...如果你点击B,你可以使用相同的列表视图来显示b1,b2被用于a1,a2,a3等... – 2010-05-03 07:06:26