请问RecyclerView如何切换视图

我想使用RecyclerView来动态切换视图,一个是类似ListView,另一个类似GridView。但两个加载的布局也不同。

效果类似于 文件管理器的 视图切换。

我试了下每次先setLayoutManager,再设置setAdapter,写了两个不同Adapter来加载不同视图。但是有问题,请大家帮忙看下。

case R.id.menu_item_change_view:
    if (isInGridView) {
        mPhotoRecyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
        updateUI();
    } else {
        mPhotoRecyclerView.setLayoutManager(new GridLayoutManager(getActivity(), 3));
        updateGridUI();
    }
private void updateUI() {
    List<Photo> photos = getPhotos();

    if (mAdapter == null) {
        mAdapter = new PhotoAdapter(photos);
        mPhotoRecyclerView.setAdapter(mAdapter);
    } else {
        mAdapter.setPhotos(photos);
        mAdapter.notifyDataSetChanged();
    }

}
private void updateGridUI() {
    List<Photo> photos = getPhotos();

    if (mGridPhotoAdapter == null) {
        mGridPhotoAdapter = new GridPhotoAdapter(photos);
        mPhotoRecyclerView.setAdapter(mGridPhotoAdapter);
    } else {
        mGridPhotoAdapter.setPhotos(photos);
        mGridPhotoAdapter.notifyDataSetChanged();
    }

}


一条小咸鱼
浏览 3399回答 3
3回答

慕粉15255556666

其实最简单的就是不在linear和gride之间切换,把linear看做1列的grid ,可以简单许多,去改变GridLayoutaManager的spancount就可以了

慕粉15255556666

我用了一个adapter 去模拟了一下线性,网格布局管理器的切换,在初始化的时候给了默认的linearlayoutmanager 点击切换的时候就像你问题中的那样写的出现了布局里面数据展示混乱的问题,不知道和你遇到的是否一样,然后再切换之前先清空了layoutmanaher 既设为null,再检查一下布局文件,用相对布局去画,如果用线性布局也会出现展示混乱的问题,这和线性布局本身的特性有关,然后我的就显示正常了O(∩_∩)O
打开App,查看更多内容
随时随地看视频慕课网APP