日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android listview优化以及listview混合itemview

發布時間:2023/12/10 Android 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android listview优化以及listview混合itemview 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
listView = (ListView) findViewById(R.id.listview); mAdapter = new VideoListAdapter(this); listView.setAdapter(mAdapter);

?

主要adapter

public class VideoListAdapter extends BaseAdapter {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);}@Overridepublic int getCount() {return viewtype.length;}@Overridepublic Object getItem(int position) {return null;}@Overridepublic long getItemId(int position) {return position;}@Overridepublic 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;}@Overridepublic int getItemViewType(int position) {return viewtype[position];}@Overridepublic 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的口袋
? ? ? ? ? ? convertView.setTag(holder);
? ? ? ? } else {
? ? ? ? ? ? holder = (ViewHolder) convertView.getTag();
? ? ? ? }
? ? ? ? //填充數據
? ? ? ? holder.textView.setText(date.get(position));
? ? ? ? return convertView;
? ? }
? ? //創建一個容器裝要復用的View
? ? static class ViewHolder {
? ? ? ? TextView textView;
? ? }
?

總結

以上是生活随笔為你收集整理的Android listview优化以及listview混合itemview的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。