【发布时间】:2016-11-25 07:38:39
【问题描述】:
我需要在 recyclerview 之间放置广告,我尝试了一种效果很好并且广告加载的方法,但问题是广告在列表视图上重叠。任何人请帮助我提前谢谢你
下面是 Adapter.class 的代码
public class NewsAdapter extends RecyclerView.Adapter<ViewHolder> {
private static final int CONTENT_TYPE = 0;
private static final int AD_TYPE = 1;
private int[] viewTypes;
int Holderid;
private List<Newslist> newslists;
private Context context;
public NewsAdapter(List<Newslist> newslists, Context context) {
super();
//Getting all the news updates
this.newslists = newslists;
this.context=context;
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
//Inflate the layout, initialize the View Holder
ViewHolder holder = null;
if (viewType == CONTENT_TYPE) {
View newsView = LayoutInflater.from(parent.getContext()).inflate(R.layout.news_list, parent, false);
holder=new ItemViewHolder(newsView);
} else {
View adView = LayoutInflater.from(parent.getContext()).inflate(R.layout.native_ads, parent, false);
holder=new AdViewHolder(adView);
}
return holder;
}
@Override
public void onBindViewHolder(ViewHolder viewHolder, final int position) {
if (position % 6 == 3) {
AdViewHolder holder = (AdViewHolder) viewHolder;
//Load the Ad
AdRequest request = new AdRequest.Builder()
.build();
holder.adView.loadAd(request);
} else {
ItemViewHolder holder = (ItemViewHolder) viewHolder;
Newslist newslist = newslists.get(holder.getAdapterPosition());
holder.message.setText(newslist.getMessage());
//Image loading using singleton class
ImageLoader imageLoader = CustomVolleyRequest.getInstance(context).getImageLoader();
holder.imageView.setImageUrl(newslist.getImageurl(), imageLoader);
holder.imageView.setDrawingCacheBackgroundColor(R.mipmap.ic_launcher);
holder.time.setText(newslist.getTime());
}
}
@Override
public int getItemCount() {
return newslists.size();
}
@Override
public int getItemViewType(int position) {
if (position % 6 ==3)
return AD_TYPE;
return CONTENT_TYPE;
}
// return newslists.get(position).getViewType();
}
class ViewHolder extends RecyclerView.ViewHolder {
ViewHolder(View v) {
super(v);
}
}
class ItemViewHolder extends ViewHolder {
TextView message;
NetworkImageView imageView;
TextView time;
RelativeLayout relativeLayout;
ItemViewHolder(View itemView) {
super(itemView);
message = (TextView) itemView.findViewById(R.id.headline);
time = (TextView) itemView.findViewById(R.id.time);
imageView = (NetworkImageView) itemView.findViewById(R.id.networkImageView2);
relativeLayout = (RelativeLayout) itemView.findViewById(R.id.relativeLayout);
}
}
class AdViewHolder extends ViewHolder {
NativeExpressAdView adView;
AdViewHolder(View v) {
super(v);
adView = (NativeExpressAdView) v.findViewById(R.id.nativeAdView);
}
}
【问题讨论】:
-
您能在 xml 布局中显示您的 R.id.nativeAdView 是什么吗?
标签: android listview admob android-recyclerview