自定义ListView实现中间项动态变大的效果(不是自定义Adapter)

为什么强调不是自定义Adapter,因为我这个自定义控件是来源与公司新做的项目,刚开始在百度上找了一圈,都说是自定义ListView ,点进去却是自定义Adaper,有的人就会说你是不是太较真了,自定义Adapter就基本可以实现各种效果了,何必要自定义Listview,今天我做的这个还确实不好用Adapter做,先上效果图,右边的动图来源于左边这个项目中的一个控件。


因为我们的项目中,六个通道的检测过程要同时动态显示,这样位置就要合理调配,因为六个通道采用的布局比较相似,所以当时考虑了Fragment或者自定义控件,后来,因为下面的四个按钮要对应四个不同的页面,也就需要使用viewpager+fragment,fragment中是不支持再用fragment的,而且每个通道的检测步骤会根据检测的项目类型而有所不同,所以,就只能采用自定义控件了。

说到自定义控件,就先要确定用哪种,不管你们怎么看,反正我第一眼看上去和listview 接近,我就先考虑自定义Listview了,刚开始也想用自定义adapter,我们要实现的是,给定item个数算出item高度并设置,我就想到了在自定义Listview中的onLayout中得到自定义Listview的高度,然后公共方法将Listview高度暴露出去,然后在adapter的getView 中得到自定义Listview的高度并计算设置item高度,事实证明,我想多了,item的getView方法是在Listview的onLayout方法前面执行的,有图为证

为了找这个错误浪费我好多时间,说出来都是泪啊

那么尺寸参数就只能在自定义Listview中搞定了,动态item状态也是要在自定义ListView中搞定。

那我们的步骤就分清楚了

1.自定义adapter,动态给ListView中定个数

2.自定义Listview,给item设置尺寸信息,并实现滚动过程逻辑

3.在MainActivity中将数据绑定到自定义ListView.

先给出LvAdapter 的代码

package diasia.cdc.com.simplelistview;

import android.animation.ValueAnimator;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;

/**
 * Created by lv on 2015/1/15.
 */
public class LvAdapter extends BaseAdapter {
    private String[] strs;
    private Context context;
    private boolean b = true;

    public LvAdapter(String[] atrs, Context context) {
        this.strs = atrs;
        this.context = context;
    }

    @Override
    public int getCount() {
        return strs.length;
    }

    @Override
    public Object getItem(int position) {
        return strs[position];
    }

    @Override
    public long getItemId(int position) {
        return position;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        ViewHold viewHold;
        if (convertView == null) {
            viewHold = new ViewHold();
            convertView = LayoutInflater.from(context).inflate(R.layout
  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 11
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值