我有两个按钮1)listview和2)gridview:
默认情况下,我有listview视图,对于列表,我使用AsyncTask
方法获取所有记录,其中我有绑定适配器:
adapter = new CategoryAdapter(context, item_name);
现在,当我将视图从列表视图更改为gridview时,它正在加载并再次使用AsyncTask
方法获取数据。
所以当我将视图从列表更改为网格或网格到列表时,我不想一次又一次地加载数据。
例如,目前所有的电子商务应用程序都有这个概念。当我们将视图从列表视图更改为网格或网格到列表视图时,它不会再次加载数据。它只是将listview转换为gridview。
我怎样才能实现这个目标?
答案 0 :(得分:1)
保留您从AsyncTask
获得的记录列表,并在点击网格按钮时将此记录列表提供给GridAdapter
。无需再次运行AsyncTask
。
答案 1 :(得分:1)
您可以使用新引入的RecyclerView
组件。它能够以不同的方式呈现数据 - 列表,网格或使用LayoutManager
实例自定义的内容。尝试这样的事情:
// Shows the data as a list
recyclerView.setLayoutManager(new LinearLayoutManager(this));
或
// Shows the data as a grid of two columns
int columns = 2;
recyclerView.setLayoutManager(new GridLayoutManager(this, columns));
视图和适配器保持不变。唯一改变的是数据呈现给用户的方式。