Android listview优化以及listview混合itemview

    int[] viewtype = {0, 0, 0, 1, 0, 0, 0, 1, 0, 0};//1 = jcvd, 0 = textView。主要的itemview类型数组



    Context context;

// LayoutInflater mInflater;

    public VideoListAdapter(Context context) {

        this.context = context;

// mInflater = LayoutInflater.from(context);

    }



    @Override

    public int getCount() {

        return viewtype.length;

    }



    @Override

    public Object getItem(int position) {

        return null;

    }



    @Override

    public long getItemId(int position) {

        return position;

    }



    @Override

    public View getView(int position, View convertView, ViewGroup parent) {

        //This is the point

// if (convertView != null && convertView.getTag() != null && convertView.getTag() instanceof VideoHolder) {

// ((VideoHolder) convertView.getTag()).jcVideoPlayer.release();

// }

        if (getItemViewType(position) == 1) {

            VideoHolder viewHolder;

            if (convertView != null && convertView.getTag() != null && convertView.getTag() instanceof VideoHolder) {

                viewHolder = (VideoHolder) convertView.getTag();//优化方法,判断是否以及加载,复用view

            } else {

                viewHolder = new VideoHolder();

                LayoutInflater mInflater = LayoutInflater.from(context);

                convertView = mInflater.inflate(R.layout.item_videoview, null);//第一个itemview布局文件

                viewHolder.jcVideoPlayer = (JCVideoPlayerStandard) convertView.findViewById(R.id.videoplayer);

                convertView.setTag(viewHolder);

            }



            viewHolder.jcVideoPlayer.setUp(

                    VideoConstant.videoUrls[0][position], JCVideoPlayer.SCREEN_LAYOUT_LIST,

                    VideoConstant.videoTitles[0][position]);



            Picasso.with(ListViewMultiHolderActivity.this)

                    .load(VideoConstant.videoThumbs[0][position])

                    .into(viewHolder.jcVideoPlayer.thumbImageView);

        } else {

            TextViewHolder textViewHolder;

            if (convertView != null && convertView.getTag() != null && convertView.getTag() instanceof TextViewHolder) {

                textViewHolder = (TextViewHolder) convertView.getTag();

            } else {

                textViewHolder = new TextViewHolder();

                LayoutInflater mInflater = LayoutInflater.from(context);

                convertView = mInflater.inflate(R.layout.item_textview, null);//第二个itemview布局文件

                textViewHolder.textView = (TextView) convertView.findViewById(R.id.textview);

                convertView.setTag(textViewHolder);

            }

        }

        return convertView;

    }



    @Override

    public int getItemViewType(int position) {

        return viewtype[position];

    }



    @Override

    public int getViewTypeCount() {

        return 2;

    }



    class VideoHolder {

        JCVideoPlayerStandard jcVideoPlayer;//item1初始化

    }



    class TextViewHolder {

        TextView textView;//item2初始化

    }

}



 优化:

====



:创建一个容器装要复用的View,设置判断,达到**减少findViewById的次数**的效果



   /\*  

     \* 渲染(填充),调用data.size次  

     \* position 索引  

     \* convertView 条目的View  

     \* parent :Listview  

     \* \*/  

    @Override  

    public View getView(int position, View convertView, ViewGroup parent) {  

        ViewHolder holder = null;  

        //当convertView首次加载的时候  

        if (convertView == null) {  

            //获取打气筒  

            LayoutInflater inflater = LayoutInflater.from(context);  

            //填充单个Item  

            convertView = inflater.inflate(R.layout.item\_main, null);  

            //获取Viewholder对象,减少findViewById的次数  

            holder = new ViewHolder();  

            //从填充的条目View中找到我们所关心的控件  

            holder.textView = convertView.findViewById(R.id.tv\_my);  

            //将holder装进convertView的口袋  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值