2013-09-29 11 views
7

私はアイテムが画像+テキストで作られたリストを持つアクティビティを持っています。私は、ユーザーがビューを変更して、その代わりに(同じ要素がまだ同じ画像+テキストで作られている)グリッドビューを持つことを許可する必要があります。ユーザーがアイコンメニューを通じてそれを行うことができますリストビューからグリッドビューに渡す

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

最終的には次のように解決されました:

012私は持っている私の活動のレイアウトについては

<?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. 一つの解決策は、その逆、その後、FrameLayoutに積層ListViewGridViewの両方を持っている、とあなたはこれらのビュー間を切り替えたいとき、視界GONE 1のビューと別のVISIBLEを設定することです。

  2. ViewFlipper

  3. ListViewGridViewの両方を入れたり、​​

  4. そして最後には、ちょうどGridViewを使用していますが、プログラムで設定され、リストビューに移行したい場合に使用列数は1になります。

+0

簡潔かつ正確な..あなたに感謝;) – SegFault

+0

@Andy RESあなたはDYNAを変更するには、いくつかのリンク/チュートリアルを与えることができますリストビューからグリッドビューへ、または逆に – Hendy

+2

ポイント#4。どのような完全にエレガントなソリューション! – eidylon

関連する問題