2013-09-29 42 views
7

我有一个列表,它的项目是由图像+文本组成的活动。我需要允许用户改变视图并且使用gridview而不是它(其元素仍然由相同的图像+文本组成)。从列表视图传递到gridview

用户可以通过一个图标菜单做到这一点:

public boolean onOptionsItemSelected(MenuItem item) 
{ 
    if(item.getItemId()== R.id.change_view) 
    { 
     // ? 
    } 
} 

我想刚才设置的新的适配器(见下文),但它并没有work..do我要创建一个新的活动去做?

if(item.getItemId()== R.id.change_view) 
{ 
    setContentView(R.layout.grid_view); 
    gridViewAdapter = new GridViewAdapter(this,R.layout.bookmark_list_item,MyApp.getItems().findAll()); 
    list.setAdapter(gridViewAdapter); 
    list.setVisibility(View.VISIBLE); 
} 

回答

0

我终于解决了这样的事情:

对于我的行为的布局我有:

<?xml version="1.0" encoding="utf-8"?> 

<merge xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" > 


<ViewStub android:id="@+id/list" 
    android:inflatedId="@+id/showlayout" 
    android:layout="@layout/list_view" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_marginTop="10dp"/> 

<ViewStub android:id="@+id/grid" 
    android:inflatedId="@+id/showlayout" 
    android:layout="@layout/grid_view" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_marginTop="10dp"/> 


</merge> 

然后我定义的列表和网格布局(也为他们的项目),以及管理充气布局它们之间的通道和然后用这种方法:

private void changeView() { 

    //if the current view is the listview, passes to gridview 
    if(list_visibile) { 
     listview.setVisibility(View.GONE); 
     gridview.setVisibility(View.VISIBLE); 
     list_visibile = false; 
     setAdapters(); 
    } 

    else { 
     gridview.setVisibility(View.GONE);      
     listview.setVisibility(View.VISIBLE); 
     list_visibile = true; 
     setAdapters(); 
    } 
} 

完整的代码在这篇文章中可用的:http://pillsfromtheweb.blogspot.it/2014/12/android-passare-da-listview-gridview.html

11

有几种方法可以做到这一点。

  1. 一种解决方案是同时拥有ListViewGridView堆放在一个FrameLayout,当你想将这些视图之间切换,能见度GONE设置为一个视图和VISIBLE到另一个,然后反之亦然。

  2. 把两个ListViewGridViewViewFlipper

  3. 或者,使用​​

  4. 最后,只使用一个GridView,但是当你要过渡到一个列表视图,通过编程设置列数为1.

+0

简明准确..谢谢;) – SegFault

+0

@Andy RES你可以提供一些链接/教程改变DYNA从列表视图到gridview或反之亦然? – Hendy

+2

点#4。多么完美优雅的解决方案! – eidylon

相关问题