0

StaggeredGridlayoutmanagerを使用してリストをグリッドに、グリッドをリストに変更していますが、ビューを変更しながらアイコンを変更したい、ビューがリストモードの場合はグリッドアイコンを表示し、ビューはグリッドモードでリストを表示したいモード

 case R.id.product_grid:

                isViewWithCatalog = !isViewWithCatalog;
                supportInvalidateOptionsMenu();

                rv.setLayoutManager(isViewWithCatalog ? new LinearLayoutManager(this) : new StaggeredGridLayoutManager(2, StaggeredGridLayoutManager.VERTICAL));
                rv.setAdapter(rvAdapter);
                break;

マイアダプター

  @Override
        public  RecyclerViewHolders onCreateViewHolder(ViewGroup parent, int viewType) {

            View layoutView = LayoutInflater.from(parent.getContext()).inflate(isViewWithCatalog ? R.layout.productlistview : R.layout.productgrids, null);
            RecyclerViewHolders rcv = new RecyclerViewHolders(layoutView);
            return rcv;


        }
4

1 に答える 1

0

1 つのブール変数を維持できます

case R.id.product_grid:
isGrid = true;
                isViewWithCatalog = !isViewWithCatalog;
                supportInvalidateOptionsMenu();

                rv.setLayoutManager(isViewWithCatalog ? new LinearLayoutManager(this) : new StaggeredGridLayoutManager(2, StaggeredGridLayoutManager.VERTICAL));
                rv.setAdapter(rvAdapter);
                break;

case R.id.product_list:
isGrid = false;
invalidateOptionMenu() or getActivity.invalidateOptionMenu() // If it is fragment

@Override
    public boolean onCreateOptionsMenu(Menu menu) {
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.menu_product, menu);
        MenuItem list = menu.findItem(R.id.list);
        MenuItem grid= menu.findItem(R.id.list);
        if(isGrid)
          grid.setVisible(true);
          list.setvisible(false)
        else
          list.setVisible(true);
          grid.setVisible(false);

        return super.onCreateOptionsMenu(menu);
    }
于 2016-07-25T10:46:29.740 に答える