Pan*_*lan 5 java android adapter admob native-ads
我一直在使用RecyclerView和 Google Volley 来解析 JSON。然后我添加了谷歌原生广告!
我在此链接上关注教程
所以我确实像谷歌开发者指南一样改变了 RecyclerViewAdapter !
它说列表必须是对象列表(列表)所以我在适配器中更改了这个和其他一些东西!
然后 Android Studio 没有显示错误,我可以启动应用程序。但是当我要使用提到的 RecyclerView 打开 Fragment 时,它崩溃了。
它说:
java.lang.ClassCastException:com.graciaapps.nameoncards.instance.greetoptions.SubOptionOneInstance 无法转换为 com.google.android.gms.ads.NativeExpressAdView
这是 onBindViewHolder 的以下行
NativeExpressAdView adView =(NativeExpressAdView)greetingInstanceList.get(position);
Run Code Online (Sandbox Code Playgroud)
第一个片段.java
NativeExpressAdView adView =(NativeExpressAdView)greetingInstanceList.get(position);
Run Code Online (Sandbox Code Playgroud)
子选项一个适配器.java
package com.cards.adapter.greetoptions;
public class SubOptionOneAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
private List<Object> greetingInstanceList;
Activity activity;
private String TAG = getClass().getName();
private static final int MENU_ITEM_VIEW_TYPE = 0;
private static final int AD_VIEW = 1;
public SubOptionOneAdapter() {
}
public SubOptionOneAdapter(Activity activity, List<Object> greetingInstanceList) {
this.greetingInstanceList = greetingInstanceList;
this.activity = activity;
}
public class MenuItemViewHolder extends RecyclerView.ViewHolder{
ImageView imageView;
TextView tvCount;
ProgressBar progressBar;
public MenuItemViewHolder(View itemView) {
super(itemView);
imageView = (ImageView) itemView.findViewById(R.id.ivLatestCardImage);
tvCount = (TextView) itemView.findViewById(R.id.tvLatestCardTitle);
progressBar = (ProgressBar) itemView.findViewById(R.id.pbBeforeImage);
progressBar.setVisibility(View.VISIBLE);
}
}
public class NativeExpressAdViewHolder extends RecyclerView.ViewHolder{
public NativeExpressAdViewHolder(View itemView) {
super(itemView);
}
}
@Override
public int getItemCount() {
return greetingInstanceList.size();
}
@Override
public int getItemViewType(int position) {
return (position % FirstFragment.ITEMS_PER_AD == 0) ? AD_VIEW : MENU_ITEM_VIEW_TYPE;
}
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup viewGroup, int viewType) {
switch (viewType)
{
case MENU_ITEM_VIEW_TYPE:
View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.latest_list_row,viewGroup,false);
return new MenuItemViewHolder(view);
case AD_VIEW:
// fall through
default:
View nativeExpressLayoutView = LayoutInflater.from(
viewGroup.getContext()).inflate(R.layout.native_express_ad_container,
viewGroup, false);
return new NativeExpressAdViewHolder(nativeExpressLayoutView);
}
}
@Override
public void onBindViewHolder(final RecyclerView.ViewHolder holder, final int position) {
int viewType = getItemViewType(position);
switch (viewType) {
case MENU_ITEM_VIEW_TYPE:
final MenuItemViewHolder menuItemViewHolder = (MenuItemViewHolder)holder;
final SubOptionOneInstance subOptionOneInstance = (SubOptionOneInstance) greetingInstanceList.get(position);
EndPoints.CUSTOM_ID = "" + subOptionOneInstance.getId();
Picasso.with(activity)
.load(subOptionOneInstance.getSample_image_url())
.error(R.drawable.ic_cancel_red)
.networkPolicy(NetworkPolicy.OFFLINE)
.into(menuItemViewHolder.imageView, new Callback() {
@Override
public void onSuccess() {
if (menuItemViewHolder.progressBar.getVisibility() == View.VISIBLE) {
menuItemViewHolder.progressBar.setVisibility(View.GONE);
}
}
@Override
public void onError() {
if (menuItemViewHolder.progressBar.getVisibility() == View.VISIBLE) {
menuItemViewHolder.progressBar.setVisibility(View.GONE);
}
Picasso.with(activity)
.load(subOptionOneInstance.getSample_image_url())
.error(R.drawable.ic_cancel_red)
.into(menuItemViewHolder.imageView, new Callback() {
@Override
public void onSuccess() {
}
@Override
public void onError() {
Log.d(TAG, "PICASSO COULD NOT FETCH IMAGE");
}
});
}
});
menuItemViewHolder.tvCount.setText(Integer.toString(subOptionOneInstance.getId()));
menuItemViewHolder.imageView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
SubOptionOneInstance instance = (SubOptionOneInstance) greetingInstanceList.get(position);
Intent intent = new Intent(activity, CardMaker.class);
activity.startActivity(intent);
| 归档时间: |
|
| 查看次数: |
1776 次 |
| 最近记录: |