Seg*_*ult 7 android listview gridview
我有一个列表活动,其项目由图像+文本组成.我需要允许用户更改视图并使用gridview而不是它(其元素仍然由相同的图像+文本组成).
用户可以通过图标菜单完成:
public boolean onOptionsItemSelected(MenuItem item)
{
if(item.getItemId()== R.id.change_view)
{
// ?
}
}
Run Code Online (Sandbox Code Playgroud)
我试图设置新的适配器(见下文),但它不起作用..我必须创建一个新的活动来做到这一点?
if(item.getItemId()== R.id.change_view)
{
setContentView(R.layout.grid_view);
gridViewAdapter = new GridViewAdapter(this,R.layout.bookmark_list_item,MyApp.getItems().findAll());
list.setAdapter(gridViewAdapter);
list.setVisibility(View.VISIBLE);
}
Run Code Online (Sandbox Code Playgroud)
And*_*Res 11
有几种方法可以实现这一目标.
一种解决方案是将a ListView和GridView堆叠在一起FrameLayout,当你想在这些视图之间切换时,将可见性设置GONE为一个视图和VISIBLE另一个视图,然后反之亦然.
把两个ListView和GridView一个ViewFlipper
或者,使用ViewSwitcher
最后,只使用a GridView,但是当您想要转换到列表视图时,以编程方式将列数设置为1.
我最终解决了这样的问题:
对于我的活动布局,我有:
<?xml version="1.0" encoding="utf-8"?>
<merge xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<ViewStub android:id="@+id/list"
android:inflatedId="@+id/showlayout"
android:layout="@layout/list_view"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"/>
<ViewStub android:id="@+id/grid"
android:inflatedId="@+id/showlayout"
android:layout="@layout/grid_view"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"/>
</merge>
Run Code Online (Sandbox Code Playgroud)
然后我定义了列表和网格(以及它们的项目)的布局,并管理它们之间的通道,膨胀布局,然后通过以下方法:
private void changeView() {
//if the current view is the listview, passes to gridview
if(list_visibile) {
listview.setVisibility(View.GONE);
gridview.setVisibility(View.VISIBLE);
list_visibile = false;
setAdapters();
}
else {
gridview.setVisibility(View.GONE);
listview.setVisibility(View.VISIBLE);
list_visibile = true;
setAdapters();
}
}
Run Code Online (Sandbox Code Playgroud)
完整的代码可在本文中找到:http://pillsfromtheweb.blogspot.it/2014/12/android-passare-da-listview-gridview.html
| 归档时间: |
|
| 查看次数: |
5207 次 |
| 最近记录: |