我有一个列表活动,其项目由图像文本组成.我需要允许用户更改视图并使用gridview而不是它(其元素仍然由相同的图像文本组成).
public boolean onOptionsItemSelected(MenuItem item) { if(item.getItemId()== R.id.change_view) { // ? } }
我试图设置新的适配器(见下文),但它不起作用..我必须创建一个新的活动来做到这一点?
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); }
解决方法
有几种方法可以实现这一目标.
>一种解决方案是将ListView和GridView堆叠在FrameLayout中,当您想要在这些视图之间切换时,将可见性GONE设置为一个视图,将VISIBLE设置为另一个视图,然后反之亦然.
>将ListView和GridView放在ViewFlipper中
>或者,使用ViewSwitcher>最后,只使用GridView,但是当您想要转换到列表视图时,以编程方式将列数设置为1.