【问题标题】:How to increase the performance of a scrollable listview which consists a non-scrollable gridview?如何提高包含不可滚动网格视图的可滚动列表视图的性能?
【发布时间】:2016-11-25 16:39:27
【问题描述】:

我有一个列表视图,其中每个项目都显示月历。在每个项目中,我都有一个网格视图来显示日期。因此,通过滚动列表项,我可以看到日历月份正在发生变化。但是listview的滚动并不顺畅。通过搜索我迄今为止得到的解决方案,gridview 渲染中有 5*7 =35 个项目,这使得滚动变慢。所以,我通过只返回一个文本视图而不是我的布局来更改 Grid Adapter 的 getItem()。

我还使用 AsyncTask 加载数据,然后将其馈送到网格适配器。但是滚动仍然很慢。如果有任何替代解决方案,而不是使用循环创建 35 个(单个日期的每个视图)视图,请告诉我。

这是用于理解问题的图像。我们可以左右滚动:

有很多关于这个的代码。

【问题讨论】:

    标签: android listview gridview scrollable


    【解决方案1】:

    在您的适配器中使用 viewTypes(覆盖 getItemViewType(int pos)getViewTypeCount())。一种视图类型是标题(例如 textView NOVEMBER 2016),第二种类型是标题(可能是带有 textViews 的 LinearLayout - SUN MON TUE WED THU FRI SAT),第三种类型是带有包含天数的 TextViews 的 LinearLayout。

    另一种方法是回收日历中的视图(GrideView 会保持视图不正常,您只会更改其可见性和文本)

    【讨论】:

    • 感谢您的回答。第一个解决方案:我很困惑,因为我只测试了一个 TextView。第二个解决方案:我不明白!能简单介绍一下吗?
    • 这里是 getItem() 的代码: @Override public View getView(int i, View itemView, final ViewGroup viewGroup) { if(itemView==null){ itemView= layoutInflater.inflate(R. layout.test_view,null);} } return itemView; }
    • 你用的是什么适配器?
    • 我正在为网格适配器扩展 BaseAdapter
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多