Android 重写lisview的adapter的getView方法,position一直是0

1\自己定义的Adapter,在getView的时候,发现position总是0,导致只有第一行的view可以渲染出来。

2\ListView,GirdView等都类似,如果高度不够,android在渲染的时候会去试探和探测高度,高度不够,则会停止渲染后面的position

 

解决:

1\有view嵌套,那么顶层的View是可以设置合适的高度的

2\嵌套层的view的高度是动态的,很难确定的。此时直接设置wrap_content不好处理,只好在运行时,设置View的高度,

3\期待完美的解决方案

 

 即时设置个足够的高度,就知道  ,position马上不为0了,

           <ListView
                    android:layout_width="wrap_content"
                    android:layout_height="1000px"
                    android:id="@+id/lst_RnRoute" />

 

或者后台动态设定

               lv_height += img_view.LineHeight;
                LinearLayout.LayoutParams lvParams = (LinearLayout.LayoutParams)_lv.LayoutParameters;
                lvParams.Height = lv_height;               
                _lv.LayoutParameters = lvParams;

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android 中,我们通常使用 Adapter 来实现 ListView、GridView 等控件的数据绑定。重写 Adapter 的目的是为了实现自定义的数据绑定逻辑。 重写 Adapter 需要继承 BaseAdapter,然后实现以下方法: 1. getCount():获取数据源的总数。 2. getItem():获取指定位置的数据项。 3. getItemId():获取指定位置的数据项的 ID。 4. getView():获取指定位置的数据项的视图。 在实现 getView() 方法时,我们需要使用 LayoutInflater 来加载自定义的布局文件,并将数据绑定到布局中的控件上。例如: ``` @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder; if (convertView == null) { convertView = LayoutInflater.from(context).inflate(R.layout.my_list_item, null); holder = new ViewHolder(); holder.title = (TextView) convertView.findViewById(R.id.title); holder.content = (TextView) convertView.findViewById(R.id.content); convertView.setTag(holder); } else { holder = (ViewHolder) convertView.getTag(); } MyData data = dataList.get(position); holder.title.setText(data.getTitle()); holder.content.setText(data.getContent()); return convertView; } static class ViewHolder { TextView title; TextView content; } ``` 在上面的代码中,我们使用了 ViewHolder 模式来提高 ListView 的性能。同时,在 getView() 方法中,我们将 MyData 类型的数据绑定到了自定义的布局文件 my_list_item.xml 中的控件上。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值