2013-09-29 80 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

相關問題