在 addOnItemTouchListener 中为 recyclerView 原生广告禁用 onItemClick
Disable onItemClick for recyclerView native ads in addOnItemTouchListener
在我的 recyclerView
中,我显示菜单项和 admob native ads
然后我将 addOnItemTouchListener
添加到 select 多个项目。
recyclerView.addOnItemTouchListener(new RecyclerItemClickListener(this, recyclerView, new RecyclerItemClickListener.OnItemClickListener() {
@Override
public void onItemClick(View view, int position) {
if (isMultiSelect)
multi_select(position);
else
Toast.makeText(getApplicationContext(), "Details Page", Toast.LENGTH_SHORT).show();
}
@Override
public void onItemLongClick(View view, int position) {
if (!isMultiSelect) {
multiSelectList = new ArrayList<>();
isMultiSelect = true;
FVideosAdapter.enableOption(false);
if (mActionMode == null) {
mActionMode = startActionMode(mActionModeCallback);
}
}
multi_select(position);
}
}));
Now how do i disable onItemClick
for UNIFIED_NATIVE_AD_VIEW_TYPE:
when isMultiSelect
is true
?
I don't want to include UNIFIED_NATIVE_AD_VIEW_TYPE
for multiselect
.
public void onBindViewHolder(@NonNull final RecyclerView.ViewHolder holder, final int position) {
int viewType = getItemViewType(position);
switch (viewType) {
case UNIFIED_NATIVE_AD_VIEW_TYPE:
UnifiedNativeAd nativeAd = (UnifiedNativeAd) videosPath.get(position);
populateNativeAdView(nativeAd, ((UnifiedNativeAdViewHolder) holder).getAdView());
break;
case MENU_ITEM_VIEW_TYPE:
default:
final FolderVideoAdapterViewHolder folderVideoAdapterViewHolder = (FolderVideoAdapterViewHolder) holder;
final FolderVideoModel folderVideoModel = (FolderVideoModel) videosPath.get(position);
folderVideoAdapterViewHolder.videoName.setText(folderVideoModel.getFileName());
folderVideoAdapterViewHolder.duration.setText(folderVideoModel.getDuration());
folderVideoAdapterViewHolder.size.setText(folderVideoModel.getSize());
if(selected_usersList.contains(videosPath.get(position)))
((FolderVideoAdapterViewHolder) holder).videoPath.setBackgroundColor(ContextCompat.getColor(mContext, R.color.list_item_selected_state));
else
((FolderVideoAdapterViewHolder) holder).videoPath.setBackgroundColor(ContextCompat.getColor(mContext, R.color.list_item_normal_state));
}
}
详细多select代码为here
要在 isMultiSelect 为真时为 UNIFIED_NATIVE_AD_VIEW_TYPE 禁用 onItemClick,您应该更改 onItemClick 方法,如下所示:
@Override
public void onItemClick(View view, int position) {
int viewType = recyclerView.getAdapter().getItemViewType(position);
if(viewType == UNIFIED_NATIVE_AD_VIEW_TYPE && isMultiSelect) {
return;
}
if (isMultiSelect)
multi_select(position);
else
Toast.makeText(getApplicationContext(), "Details Page", Toast.LENGTH_SHORT).show();
}
如果您想禁用 AdView 的长按以防止启动多选过程,请更改您的 onItemLongClick 方法,如下所示:
@Override
public void onItemLongClick(View view, int position) {
int viewType = recyclerView.getAdapter().getItemViewType(position);
if(viewType == UNIFIED_NATIVE_AD_VIEW_TYPE) {
return;
}
if (!isMultiSelect) {
multiSelectList = new ArrayList<>();
isMultiSelect = true;
FVideosAdapter.enableOption(false);
if (mActionMode == null) {
mActionMode = startActionMode(mActionModeCallback);
}
}
multi_select(position);
}
在我的 recyclerView
中,我显示菜单项和 admob native ads
然后我将 addOnItemTouchListener
添加到 select 多个项目。
recyclerView.addOnItemTouchListener(new RecyclerItemClickListener(this, recyclerView, new RecyclerItemClickListener.OnItemClickListener() {
@Override
public void onItemClick(View view, int position) {
if (isMultiSelect)
multi_select(position);
else
Toast.makeText(getApplicationContext(), "Details Page", Toast.LENGTH_SHORT).show();
}
@Override
public void onItemLongClick(View view, int position) {
if (!isMultiSelect) {
multiSelectList = new ArrayList<>();
isMultiSelect = true;
FVideosAdapter.enableOption(false);
if (mActionMode == null) {
mActionMode = startActionMode(mActionModeCallback);
}
}
multi_select(position);
}
}));
Now how do i disable
onItemClick
forUNIFIED_NATIVE_AD_VIEW_TYPE:
whenisMultiSelect
istrue
? I don't want to includeUNIFIED_NATIVE_AD_VIEW_TYPE
formultiselect
.
public void onBindViewHolder(@NonNull final RecyclerView.ViewHolder holder, final int position) {
int viewType = getItemViewType(position);
switch (viewType) {
case UNIFIED_NATIVE_AD_VIEW_TYPE:
UnifiedNativeAd nativeAd = (UnifiedNativeAd) videosPath.get(position);
populateNativeAdView(nativeAd, ((UnifiedNativeAdViewHolder) holder).getAdView());
break;
case MENU_ITEM_VIEW_TYPE:
default:
final FolderVideoAdapterViewHolder folderVideoAdapterViewHolder = (FolderVideoAdapterViewHolder) holder;
final FolderVideoModel folderVideoModel = (FolderVideoModel) videosPath.get(position);
folderVideoAdapterViewHolder.videoName.setText(folderVideoModel.getFileName());
folderVideoAdapterViewHolder.duration.setText(folderVideoModel.getDuration());
folderVideoAdapterViewHolder.size.setText(folderVideoModel.getSize());
if(selected_usersList.contains(videosPath.get(position)))
((FolderVideoAdapterViewHolder) holder).videoPath.setBackgroundColor(ContextCompat.getColor(mContext, R.color.list_item_selected_state));
else
((FolderVideoAdapterViewHolder) holder).videoPath.setBackgroundColor(ContextCompat.getColor(mContext, R.color.list_item_normal_state));
}
}
详细多select代码为here
要在 isMultiSelect 为真时为 UNIFIED_NATIVE_AD_VIEW_TYPE 禁用 onItemClick,您应该更改 onItemClick 方法,如下所示:
@Override
public void onItemClick(View view, int position) {
int viewType = recyclerView.getAdapter().getItemViewType(position);
if(viewType == UNIFIED_NATIVE_AD_VIEW_TYPE && isMultiSelect) {
return;
}
if (isMultiSelect)
multi_select(position);
else
Toast.makeText(getApplicationContext(), "Details Page", Toast.LENGTH_SHORT).show();
}
如果您想禁用 AdView 的长按以防止启动多选过程,请更改您的 onItemLongClick 方法,如下所示:
@Override
public void onItemLongClick(View view, int position) {
int viewType = recyclerView.getAdapter().getItemViewType(position);
if(viewType == UNIFIED_NATIVE_AD_VIEW_TYPE) {
return;
}
if (!isMultiSelect) {
multiSelectList = new ArrayList<>();
isMultiSelect = true;
FVideosAdapter.enableOption(false);
if (mActionMode == null) {
mActionMode = startActionMode(mActionModeCallback);
}
}
multi_select(position);
}