问题描述
我一直患有这个问题好几个月(不过现在我性能调优)。不过,我现在迫切需要知道为什么我的适配器认为有必要执行 bindView
4倍的记录。
I have been suffering this issue for months and months (but now I am performance tuning). However, I now desperately need to know why my adapter feels it is necessary to run bindView
up to 4 times on a record.
我有一个自定义光标适配器,填充一个GridView。
I have a custom cursor adapter that populates a gridview.
某些调试,以显示这是怎么回事:
Some debug to show what's going on:
03-08 14:46:47.980: I/AdapterCursorGrid(20724): newView()
03-08 14:46:48.470: I/AdapterCursorGrid(20724): bindView()
03-08 14:46:48.570: I/AdapterCursorGrid(20724): --------------------------
03-08 14:46:48.570: I/AdapterCursorGrid(20724): bindView() Record Id: 1
03-08 14:46:48.570: I/AdapterCursorGrid(20724): bindView() Cursor Position: 0
03-08 14:46:48.570: I/AdapterCursorGrid(20724): bindView() View Type: 0
03-08 14:46:48.570: I/AdapterCursorGrid(20724): --------------------------
03-08 14:46:48.600: D/AdapterCursorGrid(20724): bindView() Avatar empty...
03-08 14:46:48.690: D/AdapterCursorGrid(20724): bindView() Picture creation...
03-08 14:46:49.490: I/AdapterCursorGrid(20724): bindView()
03-08 14:46:49.501: I/AdapterCursorGrid(20724): --------------------------
03-08 14:46:49.501: I/AdapterCursorGrid(20724): bindView() Record Id: 1
03-08 14:46:49.501: I/AdapterCursorGrid(20724): bindView() Cursor Position: 0
03-08 14:46:49.501: I/AdapterCursorGrid(20724): bindView() View Type: 0
03-08 14:46:49.501: I/AdapterCursorGrid(20724): --------------------------
03-08 14:46:49.521: D/AdapterCursorGrid(20724): bindView() Avatar empty...
03-08 14:46:49.521: D/AdapterCursorGrid(20724): bindView() Picture creation...
03-08 14:46:50.320: I/AdapterCursorGrid(20724): newView()
03-08 14:46:51.170: I/AdapterCursorGrid(20724): bindView()
03-08 14:46:51.180: I/AdapterCursorGrid(20724): --------------------------
03-08 14:46:51.180: I/AdapterCursorGrid(20724): bindView() Record Id: 1
03-08 14:46:51.180: I/AdapterCursorGrid(20724): bindView() Cursor Position: 0
03-08 14:46:51.190: I/AdapterCursorGrid(20724): bindView() View Type: 0
03-08 14:46:51.190: I/AdapterCursorGrid(20724): --------------------------
03-08 14:46:51.190: D/AdapterCursorGrid(20724): bindView() Avatar empty...
03-08 14:46:51.200: D/AdapterCursorGrid(20724): bindView() Picture creation...
03-08 14:46:51.870: I/AdapterCursorGrid(20724): bindView()
03-08 14:46:51.896: I/AdapterCursorGrid(20724): --------------------------
03-08 14:46:51.896: I/AdapterCursorGrid(20724): bindView() Record Id: 1
03-08 14:46:51.900: I/AdapterCursorGrid(20724): bindView() Cursor Position: 0
03-08 14:46:51.900: I/AdapterCursorGrid(20724): bindView() View Type: 0
03-08 14:46:51.900: I/AdapterCursorGrid(20724): --------------------------
03-08 14:46:51.900: D/AdapterCursorGrid(20724): bindView() Avatar empty...
03-08 14:46:51.900: D/AdapterCursorGrid(20724): bindView() Picture creation...
阿凡达空...和图片创作......简直是调试,告诉我这是处理和更新2特定的ImageView
秒。
为什么Ø为什么 bindView
运行这么多次?究竟是什么原因,这和我能做些什么来解决呢?
Why o why is bindView
running so many times? What are the reasons for this and what can I do to resolve this?
按理来说我希望 bindView
来运行一次(每次适配器更新一次),我错在想这个?
Logically speaking I expect bindView
to run once (and once each time the adapter is updated), am I wrong in thinking this?
推荐答案
该操作系统可致电 bindView
多次,以便它可以测量并正确地铺陈名单。这不是一个这么多,因为它必须的方式错误。这一点,随着滚动的平滑度,也就是为什么 bindView
的实施必须尽可能高效。有一些不错的技巧和窍门,你可以用详细的 Android开发者页面。
The operating system may call bindView
multiple times so that it can measure and lay out the list correctly. This is not a bug so much as the way it has to be. This, along with smoothness of scrolling, is why bindView
implementations need to be as efficient as possible. There are some nice tips and tricks you can use detailed on the Android Developers Page.
这篇关于自定义光标适配器调用bindView多次的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!