从Gridview动态切换到Listview
Dynamically change to Listview frm Gridview
我想在片段中的用户单击视图后将视图从 gridview 更改为 listview。
但我做不到。
在 google 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 是列表视图布局。
我没有收到任何错误,但从逻辑上讲它不起作用。
任何人都可以指出我的错误吗?
提前致谢
您可以使用的一个选项是使用 GridView 并根据状态动态更改列数。 GridView 有一个 numColumns 属性,您可以在运行时更改它,然后通过在您的适配器上调用 notifyDataSetChanged 来应用。
您可以使用 RecyclerView
并根据您的列数将 ListView
更改为 GridView
,如下所示,与其他帖子相比,这非常简单。
private void setLayoutManager() {
if (mColumnCount <= 1) {
mColumnCount = 1;
recyclerView.setLayoutManager(new LinearLayoutManager(context));
} else {
recyclerView.setLayoutManager(new GridLayoutManager(context, mColumnCount));
}
}
如果您想以编程方式将 GridView-style 更改为 ListView-style 并将 ListView-style 更改为 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;
}
}
});
您可以为此使用 recyclerview。
将布局管理器设置为网格视图的网格布局管理器和列表视图的线性布局管理器。
根据条件使用你的逻辑。
我想在片段中的用户单击视图后将视图从 gridview 更改为 listview。
但我做不到。 在 google 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 是列表视图布局。
我没有收到任何错误,但从逻辑上讲它不起作用。
任何人都可以指出我的错误吗?
提前致谢
您可以使用的一个选项是使用 GridView 并根据状态动态更改列数。 GridView 有一个 numColumns 属性,您可以在运行时更改它,然后通过在您的适配器上调用 notifyDataSetChanged 来应用。
您可以使用 RecyclerView
并根据您的列数将 ListView
更改为 GridView
,如下所示,与其他帖子相比,这非常简单。
private void setLayoutManager() {
if (mColumnCount <= 1) {
mColumnCount = 1;
recyclerView.setLayoutManager(new LinearLayoutManager(context));
} else {
recyclerView.setLayoutManager(new GridLayoutManager(context, mColumnCount));
}
}
如果您想以编程方式将 GridView-style 更改为 ListView-style 并将 ListView-style 更改为 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;
}
}
});
您可以为此使用 recyclerview。
将布局管理器设置为网格视图的网格布局管理器和列表视图的线性布局管理器。
根据条件使用你的逻辑。