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);
}
@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初始化
}
}