Android:GridView和cursorAdapter
您好,我有一个应用程序,它使用GridView使用CursorAdapter从mediastore加载数据。除了GridView之外,它的加载和功能似乎是通过调用适配器中的newView来加载mediastore中的每一项 在logcat中,调用newView后会调用bindView。当我滚动仅调用bindView的网格时,它工作正常 看起来只有当我第一次在gridView上应用适配器时,才会为每个项目调用newView和bindView 这是以前的帖子,但尚未找到任何答案:Android:GridView和cursorAdapter,android,gridview,adapter,android-cursoradapter,Android,Gridview,Adapter,Android Cursoradapter,您好,我有一个应用程序,它使用GridView使用CursorAdapter从mediastore加载数据。除了GridView之外,它的加载和功能似乎是通过调用适配器中的newView来加载mediastore中的每一项 在logcat中,调用newView后会调用bindView。当我滚动仅调用bindView的网格时,它工作正常 看起来只有当我第一次在gridView上应用适配器时,才会为每个项目调用newView和bindView 这是以前的帖子,但尚未找到任何答案: 您描述的行为是游标
您描述的行为是游标适配器的预期工作方式 CursorAdapter具有内置视图:
newView()
bindwiew()
,bindwiew()
接收先前由newView()
返回的视图(不一定按相同顺序)。bindView的任务是根据光标中的数据将视图设置为正确的状态bindView()
,从而跳过步骤1(并节省资源)
那么,为什么在设置适配器时调用newView()
仅仅因为回收的视图池是空的,还没有视图被滚动出可见区域,因此游标适配器别无选择,只能调用newView()
获取视图的新实例,然后将其传递给bindView()
总而言之:
:创建视图实例(通常使用布局充气器)newView()
:根据光标数据(如文本、图像、按钮等)设置作为参数接收的视图状态bindView()
希望这能消除一些混淆。最好使用newView的getview instaed,这是否意味着我没有实现上一篇文章中指定的newView并实现getview。为什么对光标中的每个元素调用bindView,而不仅仅是gridView的可见区域?我有140张图片,bindView和newView一样被调用了140次。这是否意味着我不应该使用此适配器。我刚刚检查了你的另一个线程,你没有设置ImageView的高度和宽度,这取决于你的GridView设置,它会将所有140个项目填充到GridView中,因为它可以将所有0x0像素的视图放入可见区域。哦,我必须检查一下。。