【问题标题】:How do I know when "getView()" is done on ArrayAdapter我怎么知道“getView()”何时在 ArrayAdapter 上完成
【发布时间】:2017-02-13 18:48:08
【问题描述】:

我有一个使用 CustomAdapter 的 GridView,我有一个数组列表 (size=20)。

当我打电话给adapter.notifyDataSetChanged(); - getView() 被调用的次数超出了应有的次数(我知道对此无能为力)。但是我在 CustomAdapter 类上有一个变量 done==false,我想在 getView() 完成工作后将其更改为 true(在 20 次甚至 50 次之后), 我如何控制getView() 完成后会发生什么? 我想将此变量更改为true。我应该把done=true放在哪里?

*最后一个getView()call 不是必须的position==19

【问题讨论】:

  • Adnroid 文档说:当视图膨胀时,父视图(GridView、ListView...)将应用默认布局参数,除非您使用 inflate(int, android.view.ViewGroup, boolean)指定根视图并防止附加到根。
  • 在填充网格时,可能会在 GridView 上重复调用 requestLayout,检查您可以对布局视图执行的优化以避免这些额外的测量和布局传递。
  • 你为什么需要这个done标志?

标签: android listview android-arrayadapter custom-adapter getview


【解决方案1】:

你将无法做到这一点! 当 Listview 刷新时,它是滚动时的子项

绝对不能保证 getView() 的顺序 被调用也不被调用多少次。

source

【讨论】:

  • 但这不是我问的——我已经知道订单没有保证,我已经知道调用次数没有保证。但是 - 最后这个方法做对了吗?它仍然是Java。那么一旦完成会发生什么。
  • 我不明白你想做什么,如果你把 done == true; 放在方法的末尾,在这个方法调用时它会是真的,如果 done 是适配器中的一个字段,那么它将保持真实。
  • 稍后我将其更改为 false,这不是问题。只有在最后一次调用“getView()”时(在 ** 次之后),我才需要将其更改为 true
  • 你永远无法检测到方法的最后调用!!,你只能检测到列表视图的底部[用户已滚动到最后一行]或列表视图的顶部
  • 我的应用没有滚动条
猜你喜欢
  • 2017-01-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多