我想使用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();
????}
}
3 回答

慕粉15255556666
TA貢獻12條經驗 獲得超10個贊
其實最簡單的就是不在linear和gride之間切換,把linear看做1列的grid ,可以簡單許多,去改變GridLayoutaManager的spancount就可以了

慕粉15255556666
TA貢獻12條經驗 獲得超10個贊
我用了一個adapter 去模擬了一下線性,網格布局管理器的切換,在初始化的時候給了默認的linearlayoutmanager 點擊切換的時候就像你問題中的那樣寫的出現了布局里面數據展示混亂的問題,不知道和你遇到的是否一樣,然后再切換之前先清空了layoutmanaher 既設為null,再檢查一下布局文件,用相對布局去畫,如果用線性布局也會出現展示混亂的問題,這和線性布局本身的特性有關,然后我的就顯示正常了O(∩_∩)O
- 3 回答
- 2 關注
- 3534 瀏覽
添加回答
舉報
0/150
提交
取消