我希望在用户在片段中点击视图后,将视图frm gridview更改为listview。
但我无法做到这一点。 在谷歌Quora和SO上搜索了很多,但没有找到任何解决方案
这是我的片段代码
public class FragmentAlbum extends Fragment {
@Override
public View onCreateView(final LayoutInflater inflater, final ViewGroup container,Bundle savedInstanceState) {
root = (ViewGroup) inflater.inflate(R.layout.album,container, false);
activity = getActivity();
lv=(GridView) root.findViewById(R.id.gridview);
lv.setAdapter(adaptor);
lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,int position, long id) {
root = (ViewGroup) inflater.inflate(R.layout.album_list,container, false);
listview=(ListView) root.findViewById(android.R.id.list);
listview.setAdapter(adaptor1);
break;
}
}}
);
return root;
}
。 当我点击视图仍然在Gridview中 初步观点不会消失。
专辑是gridview布局。
album_list是listview布局。
我没有收到任何错误,但从逻辑上讲它不起作用。
有谁能告诉我我的错误?。
提前完成
答案 0 :(得分:4)
您可以使用recyclerview进行此操作。
将layoutmanager设置为gridview的gridlayout manager和listview的linearlayout manager。
根据条件使用您的逻辑。
答案 1 :(得分:2)
您可以使用的一个选项是使用GridView并根据状态动态更改列数。 GridView有一个numColumns属性,您可以在运行时更改该属性,然后通过在适配器上调用notifyDataSetChanged来应用它。
答案 2 :(得分:2)
您可以使用RecyclerView
并根据您的列数将ListView
更改为GridView
,与其他帖子相比,这非常简单。
private void setLayoutManager() {
if (mColumnCount <= 1) {
mColumnCount = 1;
recyclerView.setLayoutManager(new LinearLayoutManager(context));
} else {
recyclerView.setLayoutManager(new GridLayoutManager(context, mColumnCount));
}
}
答案 3 :(得分:1)
如果要将GridView样式更改为ListView样式,将ListView样式更改为GridView。然后以编程方式更改gridview的NO-OF-COLUMNS值。 喜欢这里
switchIV.setOnClickListener(new OnClickListener()
{
public void onClick(View arg0)
{
if(style==0)
{
//Change gridview to listview style
gridview.setNumColumns(1);
Update_with_ListView_Style();
style=1;
}
else
{
//change gridview back to gridview style with 3 columns
gridview.setNumColumns(3);
Update_with_GridView_Style();
style=0;
}
}
});