【问题标题】:how to stop loading each time when i change view from listview to gridview每次我将视图从列表视图更改为网格视图时如何停止加载
【发布时间】:2015-07-23 07:31:31
【问题描述】:

我有两个按钮 1) 列表视图和 2) 网格视图:

默认情况下,我有 listview 视图,对于列表,我使用 AsyncTask 方法获取所有记录,其中我有绑定适配器:

adapter = new CategoryAdapter(context, item_name);

现在,当我将视图从列表视图更改为网格视图时,它正在加载并再次使用 AsyncTask 方法获取数据。

所以当我将视图从列表更改为网格或从网格更改为列表时,我不想一次又一次地加载数据。

例如目前所有的电子商务应用程序都有这个概念。当我们将视图从列表视图更改为网格或网格更改为列表视图时,它不会再次加载数据。它只是将该列表视图转换为网格视图。

我怎样才能做到这一点?

【问题讨论】:

  • 假设您有一个要加载到 ListViewList<Objects>。现在您单击网格按钮。将相同的List<Objects> 传递给GridAdapter,而不是调用AsyncTask
  • ok.. 当我将 gridview 更改为 listview 时呢?
  • 重复使用与 GridView 相同的 List<Objects>。我觉得没那么复杂。
  • 好的。让我试试这个。

标签: android android-fragments android-listview android-gridview


【解决方案1】:

保留您从AsyncTask 获得的记录列表,并在单击网格按钮时将此记录列表提供给您的GridAdapter。无需再次运行AsyncTask

【讨论】:

    【解决方案2】:

    您可以使用新引入的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));
    

    视图和适配器保持不变。唯一改变的是数据呈现给用户的方式。

    【讨论】:

    • 没有。我正在理解它。我没有得到它的概念。 :-(
    • 我必须在哪里写上两行?设置适配器后?
    • 试试this 教程。我相信你读完之后就会明白这一点。您应该在按钮的onCreate() 方法和回调监听器onClick() 方法中设置LayoutManager
    猜你喜欢
    • 2014-07-25
    • 1970-01-01
    • 2022-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-13
    • 1970-01-01
    相关资源
    最近更新 更多