为了账号安全,请及时绑定邮箱和手机立即绑定

自定义listview适配器getView方法多次被调用,并且没有一致的顺序

自定义listview适配器getView方法多次被调用,并且没有一致的顺序

aluckdog 2019-06-24 11:13:13
自定义listview适配器getView方法多次被调用,并且没有一致的顺序我有一个自定义列表适配器:class ResultsListAdapter extends ArrayAdapter<RecordItem> {在重写的‘getView’方法中,我执行一个打印来检查什么位置以及它是否是一个转换视图:    @Override     public View getView(int position, View convertView, ViewGroup parent) {         System.out.println("getView " + position + " " + convertView);它的输出(当第一次显示列表时,还没有用户输入)04-11 16:24:05.860: INFO/System.out(681): getView 0 null  04-11 16:24:29.020: INFO/System.out(681):  getView 1 android.widget.RelativeLayout@43d415d8  04-11 16:25:48.070: INFO/System.out(681):   getView 2 android.widget.RelativeLayout@43d415d8  04-11 16:25:49.110: INFO/System.out(681):   getView 3 android.widget.RelativeLayout@43d415d8  04-11 16:25:49.710: INFO/System.out(681):   getView 0 android.widget.RelativeLayout@43d415d8  04-11 16:25:50.251: INFO/System.out(681):   getView 1 null  04-11 16:26:01.300: INFO/System.out(681): getView 2 null  04-11 16:26:02.020: INFO/System.out(681):   getView 3 null  04-11 16:28:28.091: INFO/System.out(681): getView 0 null  04-11 16:37:46.180: INFO/System.out(681):    getView 1 android.widget.RelativeLayout@43cff8f0  04-11 16:37:47.091: INFO/System.out(681):     getView 2 android.widget.RelativeLayout@43cff8f0  04-11 16:37:47.730: INFO/System.out(681):     getView 3 android.widget.RelativeLayout@43cff8f0AFAIK虽然找不到明确的声明,但getView()只对可见的行调用。由于我的应用程序从四行可见开始,至少从0-3循环的位置号是有意义的。但剩下的都是一团糟:为什么每一行都要调用getview三次?当我还没有滚动的时候,这些转换视图是从哪里来的呢?我做了一些研究,但没有得到一个好的答案,我确实注意到人们把这个问题和布局问题联系在一起。因此,以防万一,下面是包含列表的布局:<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"     android:layout_height="fill_parent"     android:layout_width="fill_parent"      android:orientation="vertical" >     <TextView android:id="@+id/pageDetails"         android:layout_width="fill_parent"          android:layout_height="wrap_content" />     <ListView android:id="@+id/list"         android:layout_width="fill_parent"         android:layout_height="wrap_content"
查看完整描述

3 回答

?
慕雪6442864

TA贡献1812条经验 获得超5个赞

这不是问题,绝对不能保证getView()会被召唤多少次。在您的特殊情况下,您正在使用ListView通过给它一个height=wrap_content..这股力量ListView要在布局时测量出适配器中的几个子节点,可以知道它应该有多大。这就是提供ListView带着convertViews你看传递给getView()甚至在你滚动之前。


查看完整回答
反对 回复 2019-06-24
?
开满天机

TA贡献1786条经验 获得超13个赞

试着match_parentlayout_height属性的列表视图。它会阻止getView()经常被打电话。


查看完整回答
反对 回复 2019-06-24
?
富国沪深

TA贡献1790条经验 获得超9个赞

当我将布局_宽度和布局_高度更改为匹配父母(只更改布局_高度没有帮助)。


有帮助的注释如果您有嵌套项,请小心。你必须把“最高”的一个改为匹配父母..希望能帮上忙。


查看完整回答
反对 回复 2019-06-24
  • 3 回答
  • 0 关注
  • 751 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号