Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.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
Android ArrayAdapter与admob adview ListView崩溃_Android_Listview_Admob_Android Arrayadapter_Adview - Fatal编程技术网

Android ArrayAdapter与admob adview ListView崩溃

Android ArrayAdapter与admob adview ListView崩溃,android,listview,admob,android-arrayadapter,adview,Android,Listview,Admob,Android Arrayadapter,Adview,我试图通过ArrayAdapter将admob AdView放入列表视图。目前,它加载良好,并且广告按预期显示在listview中。当我滚动时,当包含广告的行不在视图中时,应用程序冻结。我想删除adview会引起一些问题。有没有办法防止这种情况?或者是否有一种方法可以检测何时从listview中删除一行?或者更好的是,有没有一种方法可以使该行不会从listview中清除并保留 以下是adapter getView方法中的内容: public View getView(int position,

我试图通过ArrayAdapter将admob AdView放入列表视图。目前,它加载良好,并且广告按预期显示在listview中。当我滚动时,当包含广告的行不在视图中时,应用程序冻结。我想删除adview会引起一些问题。有没有办法防止这种情况?或者是否有一种方法可以检测何时从listview中删除一行?或者更好的是,有没有一种方法可以使该行不会从listview中清除并保留

以下是adapter getView方法中的内容:

public View getView(int position, View convertView, ViewGroup parent) {

    View row = convertView;


    ChapterModel chapter = getItem(position);


        LinearLayout L;
        if (row == null) {
            LayoutInflater inflater = (LayoutInflater) this.getContext()
            .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            row = inflater.inflate(R.layout.chapter_listview_ad, parent, false);

         }

            AdRequest request = new AdRequest();
            AdView adView;
            L=(LinearLayout) row.findViewById(R.id.chapter_row_layout);
                                        adView= new AdView((Activity) this.context,new AdSize(768,90), ADDID);


                adView.setAdListener(this);
                adView.loadAd(request);

                L.addView(adView); 
                 return row;
}
eclipse在下图中给出了:NullPopinterException

注意:这会起作用,但会导致add在每次离开屏幕时被删除或重新加载:

public int getItemViewType(int position) {
     // Don't let ListView try to reuse the views.
     return AdapterView.ITEM_VIEW_TYPE_IGNORE;
 }

仅供参考,AdMob的条款要求一次只能在屏幕上显示一个AdView,因此请注意不要将AdView添加到每个列表项中


话虽如此,这里是一个很棒的ListView开源示例,它展示了如何在每个X项中嵌入AdMob广告。适配器本身是另一个适配器对象的包装器,但以指定的间隔嵌入ads。您可以将您的ArrayAdapter传递到此适配器,它将为您添加广告。

请查看。实现AdmobFetcher类,该类预取和存储列表中每个位置的ad块。它防止在获取广告块和滚动时冻结列表。

是否要在每行中放置一个AdMob单元?在logcat中发布您得到的异常。是的,我想在一行中放置一个admob单元。其余的将是常规标题w图标。感谢你发送的链接在许多方面帮助了我。主要问题在于设置:getViewTypeCount()//需要将其设置为两种不同的行类型,而public int getItemViewType(int position)设置行的类型