Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/216.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在带有resourcecursoradapter((不替换任何数据项))的recyclerview中使用本机admob广告_Java_Android_Admob_Google Admob - Fatal编程技术网

Java 如何在带有resourcecursoradapter((不替换任何数据项))的recyclerview中使用本机admob广告

Java 如何在带有resourcecursoradapter((不替换任何数据项))的recyclerview中使用本机admob广告,java,android,admob,google-admob,Java,Android,Admob,Google Admob,我正在尝试在使用resourcecursoradapter适配器的recyclerview中添加admob本机广告。。问题是 1-它使应用程序崩溃 2-它用admob ads替换recyclerview数据项 这是我的密码 public class EntriesCursorAdapter extends ResourceCursorAdapter { private final Uri mUri; private final boolean mShowFeedInfo;

我正在尝试在使用resourcecursoradapter适配器的recyclerview中添加admob本机广告。。问题是 1-它使应用程序崩溃 2-它用admob ads替换recyclerview数据项 这是我的密码

public class EntriesCursorAdapter extends ResourceCursorAdapter {

    private final Uri mUri;
    private final boolean mShowFeedInfo;
    private int mIdPos, mTitlePos, mMainImgPos, mDatePos, mIsReadPos, mFavoritePos, mFeedIdPos, mFeedNamePos;
    public static final int Ads_view_type = 11;

    public EntriesCursorAdapter(Context context, Uri uri, Cursor cursor, boolean showFeedInfo) {
        super(context, PrefUtils.getInt(PrefUtils.NEWS_FORMAT_int,R.layout.item_entry_list2), cursor, 0);
        mUri = uri;
        mShowFeedInfo = showFeedInfo;

        reinit(cursor);
    }

    @Override
    public View newView(Context context, Cursor cursor, ViewGroup parent) {
        final int position = cursor.getPosition();
        final int viewtype = getItemViewType(position);
        View itemView ;
        if(viewtype == Ads_view_type) {
            final LayoutInflater inflater = LayoutInflater.from(context);
            itemView = inflater.inflate(R.layout.native_ads, parent, false);
            if (itemView.getTag(R.id.holder) == null) {
                AdsHolder ads_holder = new AdsHolder();
                ads_holder.adView = (NativeExpressAdView) itemView.findViewById(R.id.adView2);
                itemView.setTag(R.id.holder, ads_holder);
            } return itemView;

        }
        else {
            final LayoutInflater inflater = LayoutInflater.from(context);
            itemView  = inflater.inflate(PrefUtils.getInt(PrefUtils.NEWS_FORMAT_int, R.layout.item_entry_list2), parent, false);
            if (itemView.getTag(R.id.holder) == null) {
                ViewHolder holder = new ViewHolder();
                holder.titleTextView = (TextView) itemView.findViewById(android.R.id.text1);
                holder.dateTextView = (TextView) itemView.findViewById(android.R.id.text2);
                holder.mainImgView = (ImageView) itemView.findViewById(R.id.main_icon);
                holder.starImgView = (ImageView) itemView.findViewById(R.id.favorite_icon);
                itemView.setTag(R.id.holder, holder);
            }
            return itemView;
           }
        }

    @Override
    public int getItemViewType(int position) {
        if(position % 6 ==0)
        {return Ads_view_type;}
        else {
            return super.getItemViewType(position);
        }

    }


    @Override
    public void bindView(View view, final Context context, Cursor cursor) {
        final int position = cursor.getPosition();
        final int viewtype = getItemViewType(position);
        if (viewtype == Ads_view_type) {
            try {
                AdsHolder adsHolder = (AdsHolder) view.getTag(R.id.holder);
                AdRequest request = new AdRequest.Builder()
                        .addTestDevice("ca-app-pub-5647351014779121/8591922893")
                        .build();
                adsHolder.adView.loadAd(request);
            } catch (Exception e) {
            }
        } else {
            try {
                ViewHolder holder = (ViewHolder) view.getTag(R.id.holder);

                String titleText = cursor.getString(mTitlePos);
                holder.titleTextView.setText(titleText);

                final long feedId = cursor.getLong(mFeedIdPos);
                String feedName = cursor.getString(mFeedNamePos);

                String mainImgUrl = cursor.getString(mMainImgPos);
                mainImgUrl = TextUtils.isEmpty(mainImgUrl) ? null : NetworkUtils.getDownloadedOrDistantImageUrl(cursor.getLong(mIdPos), mainImgUrl);

                ColorGenerator generator = ColorGenerator.DEFAULT;
                int color = generator.getColor(feedId); // The color is specific to the feedId (which shouldn't change)
                String lettersForName = feedName != null ? (feedName.length() < 2 ? feedName.toUpperCase() : feedName.substring(0, 2).toUpperCase()) : "";
                TextDrawable letterDrawable = TextDrawable.builder().buildRect(lettersForName, color);
                if (mainImgUrl != null) {
                    Glide.with(context).load(mainImgUrl).centerCrop().placeholder(letterDrawable).error(letterDrawable).into(holder.mainImgView);
                } else {
                    Glide.clear(holder.mainImgView);
                    holder.mainImgView.setImageDrawable(letterDrawable);
                }

                holder.isFavorite = cursor.getInt(mFavoritePos) == 1;

                holder.starImgView.setVisibility(holder.isFavorite ? View.VISIBLE : View.INVISIBLE);

                if (mShowFeedInfo && mFeedNamePos > -1) {
                    if (feedName != null) {
                        holder.dateTextView.setText(Html.fromHtml("<font color='#247ab0'>" + feedName + "</font>" + Constants.COMMA_SPACE + StringUtils.getDateTimeString(cursor.getLong(mDatePos))));
                    } else {
                        holder.dateTextView.setText(StringUtils.getDateTimeString(cursor.getLong(mDatePos)));
                    }
                } else {
                    holder.dateTextView.setText(StringUtils.getDateTimeString(cursor.getLong(mDatePos)));
                }

                if (cursor.isNull(mIsReadPos)) {
                    holder.titleTextView.setEnabled(true);
                    holder.dateTextView.setEnabled(true);
                    holder.isRead = false;
                } else {
                    holder.titleTextView.setEnabled(false);
                    holder.dateTextView.setEnabled(false);
                    holder.isRead = true;
                }
            } catch (Exception e) {}

        }
    }

    public void toggleReadState(final long id, View view) {
        final ViewHolder holder = (ViewHolder) view.getTag(R.id.holder);

        if (holder != null) { // should not happen, but I had a crash with this on PlayStore...
            holder.isRead = !holder.isRead;

            if (holder.isRead) {
                holder.titleTextView.setEnabled(false);
                holder.dateTextView.setEnabled(false);
            } else {
                holder.titleTextView.setEnabled(true);
                holder.dateTextView.setEnabled(true);
            }

            new Thread() {
                @Override
                public void run() {
                    ContentResolver cr = MainApplication.getContext().getContentResolver();
                    Uri entryUri = ContentUris.withAppendedId(mUri, id);
                    cr.update(entryUri, holder.isRead ? FeedData.getReadContentValues() : FeedData.getUnreadContentValues(), null, null);
                }
            }.start();
        }
    }

    public void toggleFavoriteState(final long id, View view) {
        final ViewHolder holder = (ViewHolder) view.getTag(R.id.holder);

        if (holder != null) { // should not happen, but I had a crash with this on PlayStore...
            holder.isFavorite = !holder.isFavorite;

            if (holder.isFavorite) {
                holder.starImgView.setVisibility(View.VISIBLE);
            } else {
                holder.starImgView.setVisibility(View.INVISIBLE);
            }

            new Thread() {
                @Override
                public void run() {
                    ContentValues values = new ContentValues();
                    values.put(EntryColumns.IS_FAVORITE, holder.isFavorite ? 1 : 0);

                    ContentResolver cr = MainApplication.getContext().getContentResolver();
                    Uri entryUri = ContentUris.withAppendedId(mUri, id);
                    cr.update(entryUri, values, null, null);
                }
            }.start();
        }
    }



    @Override
    public void changeCursor(Cursor cursor) {
        reinit(cursor);
        super.changeCursor(cursor);
    }

    @Override
    public Cursor swapCursor(Cursor newCursor) {
        reinit(newCursor);
        return super.swapCursor(newCursor);
    }

    @Override
    public void notifyDataSetChanged() {
        reinit(null);
        super.notifyDataSetChanged();
    }

    @Override
    public void notifyDataSetInvalidated() {
        reinit(null);
        super.notifyDataSetInvalidated();
    }

    private void reinit(Cursor cursor) {
        if (cursor != null && cursor.getCount() > 0) {
            mIdPos = cursor.getColumnIndex(EntryColumns._ID);
            mTitlePos = cursor.getColumnIndex(EntryColumns.TITLE);
            mMainImgPos = cursor.getColumnIndex(EntryColumns.IMAGE_URL);
            mDatePos = cursor.getColumnIndex(EntryColumns.DATE);
            mIsReadPos = cursor.getColumnIndex(EntryColumns.IS_READ);
            mFavoritePos = cursor.getColumnIndex(EntryColumns.IS_FAVORITE);
            mFeedNamePos = cursor.getColumnIndex(FeedColumns.NAME);
            mFeedIdPos = cursor.getColumnIndex(EntryColumns.FEED_ID);
        }
    }

    private static class ViewHolder {
        public TextView titleTextView;
        public TextView dateTextView;
        public ImageView mainImgView;
        public ImageView starImgView;
        public boolean isRead, isFavorite;
    }
    private static class AdsHolder {
        NativeExpressAdView adView;
    }
}
公共类EntriesCursorAdapter扩展了ResourceCursorAdapter{
私有最终Uri mUri;
私有最终布尔mShowFeedInfo;
私有int mIdPos、mTitlePos、mMainImgPos、mDatePos、误读POS、mFavoritePos、MFEEDDPOS、MFEEDDAMEPOS;
公共静态最终int Ads_视图_类型=11;
公共EntriesCursorAdapter(上下文上下文、Uri、光标、布尔showFeedInfo){
super(上下文,PrefUtils.getInt(PrefUtils.NEWS\u FORMAT\u int,R.layout.item\u entry\u list2),游标,0);
mUri=uri;
mShowFeedInfo=showFeedInfo;
雷尼特(光标);
}
@凌驾
公共视图newView(上下文上下文、光标、视图组父对象){
final int position=cursor.getPosition();
最终int viewtype=getItemViewType(位置);
查看项目视图;
if(视图类型==Ads\U视图\U类型){
最终LayoutFlater充气机=LayoutFlater.from(上下文);
itemView=充气机。充气(R.layout.native_ads,父项,false);
if(itemView.getTag(R.id.holder)==null){
AdsHolder ads_holder=新AdsHolder();
ads_holder.adView=(NativeExpressAdView)itemView.findviewbyd(R.id.adView2);
itemView.setTag(R.id.holder、ads_holder);
}返回项目视图;
}
否则{
最终LayoutFlater充气机=LayoutFlater.from(上下文);
itemView=inflater.inflate(PrefUtils.getInt(PrefUtils.NEWS\u FORMAT\u int,R.layout.item\u entry\u list2),父项,false);
if(itemView.getTag(R.id.holder)==null){
ViewHolder=新的ViewHolder();
holder.titleTextView=(TextView)itemView.findViewById(android.R.id.text1);
holder.dateTextView=(TextView)itemView.findViewById(android.R.id.text2);
holder.mainImgView=(ImageView)itemView.findViewById(R.id.main_图标);
holder.starImgView=(ImageView)itemView.findViewById(R.id.favorite_图标);
itemView.setTag(R.id.holder,holder);
}
返回项目视图;
}
}
@凌驾
public int getItemViewType(int位置){
如果(位置%6==0)
{return Ads\u view\u type;}
否则{
返回super.getItemViewType(位置);
}
}
@凌驾
public void bindView(视图、最终上下文、光标){
final int position=cursor.getPosition();
最终int viewtype=getItemViewType(位置);
if(视图类型==Ads\U视图\U类型){
试一试{
adshholder=(adshholder)view.getTag(R.id.holder);
AdRequest请求=新建AdRequest.Builder()
.addTestDevice(“ca-app-pub-5647351014779121/8591922893”)
.build();
adsHolder.adView.loadAd(请求);
}捕获(例外e){
}
}否则{
试一试{
ViewHolder=(ViewHolder)view.getTag(R.id.holder);
String titleText=cursor.getString(mTitlePos);
holder.titleTextView.setText(titleText);
final long feedId=cursor.getLong(mfeedidos);
String feedName=cursor.getString(mFeedNamePos);
String mainImgUrl=cursor.getString(mMainImgPos);
mainImgUrl=TextUtils.isEmpty(mainImgUrl)?null:NetworkUtils.getdownloadeOrdinStatimageURL(cursor.getLong(mIdPos),mainImgUrl);
ColorGenerator=ColorGenerator.DEFAULT;
int color=generator.getColor(feedId);//该颜色特定于feedId(不应更改)
字符串lettersForName=feedName!=null?(feedName.length()<2?feedName.toUpperCase():feedName.substring(0,2).toUpperCase()):“”;
TextDrawable-letterDrawable=TextDrawable.builder().buildRect(lettersForName,颜色);
如果(mainImgUrl!=null){
Glide.with(context).load(mainImgUrl).centerCrop().placeholder(letteraweable).error(letteraweable).into(holder.mainImgView);
}否则{
滑动。清除(保持架。主视图);
支架.主imgView.可设置图像可绘制(可绘制字母);
}
holder.isFavorite=cursor.getInt(mFavoritePos)==1;
holder.starImgView.setVisibility(holder.isFavorite?View.VISIBLE:View.INVISIBLE);
如果(mShowFeedInfo&&mFeedNamePos>-1){
if(feedName!=null){
holder.dateTextView.setText(Html.fromHtml(“+feedName+”+Constants.逗号+空格+StringUtils.getDateTimeString(cursor.getLong(mDatePos)));
}否则{
holder.dateTextView.setText(StringUtils.getDateTimeString(cursor.getLong(mDatePos));
}
}否则{
holder.dateTextView.setText(StringUtils.getDateTimeString(cursor.getLong(mDatePos));
}
if(cursor.isNull(mIsReadPos)){
holder.titleTextView.setEnabled(true);
holder.dateTextView.setEnabled(true);
holder.isRead=false;
}否则{
holder.titleTextView.setEnabled(false);
holder.dateTextView.setEnabled(false);
holder.isRead=true;
}
}捕获(例外e){}
}
}
public void toggleReadState(最终长id,视图){
final ViewHolder=(ViewHolder)view.getTag(R.id.holder);
如果(霍尔德)