in AliRTC2.5/Android/RtcSample/app/src/main/java/com/aliyun/rtcdemo/adapter/ChartUserAdapter.java [37:112]
public void onBindViewHolder(ChartViewHolder holder, int position) {
holder.mScreenLayout.setVisibility(View.GONE);
holder.mVideoLayout.setVisibility(View.GONE);
if (mList.isEmpty()) {
return;
}
ChartUserBean item = mMap.get(mList.get(position));
//fill surface
//如果没有surface则不显示
holder.mSurfaceContainer.removeAllViews();
holder.mScreenSurfaceContainer.removeAllViews();
if (item == null) {
return;
}
if (item.mCameraSurface != null) {
holder.mVideoLayout.setVisibility(View.VISIBLE);
//如果老的surfaceview还在之前的viewtree中,需要先移除
ViewParent parent = item.mCameraSurface.getParent();
if (parent != null) {
if (parent instanceof FrameLayout) {
((FrameLayout) parent).removeAllViews();
}
holder.mSurfaceContainer.removeAllViews();
}
holder.mSurfaceContainer.addView(item.mCameraSurface,
new FrameLayout.LayoutParams(FrameLayout.LayoutParams.MATCH_PARENT, FrameLayout.LayoutParams.MATCH_PARENT));
}
if (item.mScreenSurface != null) {
//如果老的surfaceview还在之前的viewtree中,需要先移除
holder.mScreenLayout.setVisibility(View.VISIBLE);
ViewParent parent = item.mScreenSurface.getParent();
if (parent != null) {
if (parent instanceof FrameLayout) {
((FrameLayout) parent).removeAllViews();
}
holder.mScreenSurfaceContainer.removeAllViews();
}
holder.mScreenSurfaceContainer.addView(item.mScreenSurface,
new FrameLayout.LayoutParams(FrameLayout.LayoutParams.MATCH_PARENT, FrameLayout.LayoutParams.MATCH_PARENT));
}
holder.mVideoFlip.setOnCheckedChangeListener(null);
holder.mVideoFlip.setChecked(item.mIsCameraFlip);
holder.mScreenFlip.setOnCheckedChangeListener(null);
holder.mScreenFlip.setChecked(item.mIsScreenFlip);
holder.mVideoFlip.setOnCheckedChangeListener((buttonView, isChecked) -> {
if (mOnSubConfigChangeListener != null) {
mOnSubConfigChangeListener.onFlipView(item.mUserId, CAMERA,isChecked);
}
});
holder.mScreenFlip.setOnCheckedChangeListener((buttonView, isChecked) -> {
if (mOnSubConfigChangeListener != null) {
mOnSubConfigChangeListener.onFlipView(item.mUserId, SCREEN,isChecked);
}
});
holder.mVideoMediaInfo.setOnClickListener(v -> {
if (mOnSubConfigChangeListener != null) {
mOnSubConfigChangeListener.onShowVideoInfo(item.mUserId,CAMERA);
}
});
holder.mScreenMediaInfo.setOnClickListener(v -> {
if (mOnSubConfigChangeListener != null) {
mOnSubConfigChangeListener.onShowVideoInfo(item.mUserId,SCREEN);
}
});
}