0

recyclerViewのlist_item_layoutをトグルするボタンが必要です。最良の方法RecyclerView変更アイテムすべてのアイテムのレイアウト?

私はさまざまなサンプルを見て、これはhttps://github.com/gjiazhe/LayoutSwitchです(ただし、gridlayoutmanagerを扱っています)。リストレイアウトマネージャは必要ですが、レイアウトファイルは異なります。

私のケースでは、onScrollはもっと多くのアイテムをロードし、そのコードのようにアダプタのパラメータ変数とnotifychangeだけを変更すると、私は混在します。一部のアイテムで古いレイアウトが使用されています。

アダプターを再作成しましたが、これを解決する最善の方法ではないと思います。

ここに私の最終的なコードスニペット

public boolean onOptionsItemSelected(MenuItem item) { 

    int id = item.getItemId(); 

    if (id == R.id.action_no_image_view) { 

     int lastFirstVisiblePosition = ((LinearLayoutManager)mRecyclerView.getLayoutManager()).findFirstCompletelyVisibleItemPosition(); 


     mAdapter = new ItemsAdapter(getContext(), mPostsList, this); 
     mAdapter.setLayoutType(ItemsAdapter.TYPE_LIST); 
     mRecyclerView.setAdapter(mAdapter); 
     mRecyclerView.getLayoutManager().scrollToPosition(lastFirstVisiblePosition); 

     return true; 
    } 

    return super.onOptionsItemSelected(item); 
} 

があり、それを作るための良い方法ですか?

UPDATE:間違いで、ちょうど@Override 公共int型getItemViewType(int型の位置)をオーバーライドし、必要なビュータイプ

を返し、それが魅力

答えて

0

行うよう

mAdapter.setLayoutType(newType); 
mAdapter.notifyDataSetChanged(); 

が仕事になりますするために必要な次のようなもの:

mAdapter.setLayoutType(ItemsAdapter.TYPE_LIST); 
mAdapter.notifyDataSetChanged(); 

あなたが必要なのはすべてであるはずです。それがあなたがやっていたことで、うまくいかなかったら、元のコードを1つのアダプターで掲示してください。

関連する問題