Я знаю, что этот вопрос задавался несколько раз.Я прошел через много билетов здесь на стеке потока, и я не могу найти что-то, что я могу ясно понять.Мне удалось отобразить баннер Admob в моем приложении, но я не могу понять, как включить его в мой список.Я буду очень благодарен за указатели и / или помощь.
Размещение нативной рекламы AdMob в listView
Вот мой адаптер, на котором я хочу разместить баннерную рекламу.
@Override
public void onBindViewHolder(MyViewHolder holder, int position) {
League league = leaguesList.get(position);
if (position == 0) {
// Create and return Ad View
//int id = league.getId();
//String leagueId = String.valueOf(id);
//holder.id.setText(leagueId);
holder.name.setText("BANNER GOES HERE");
} else {
// Create and return a normal View
int id = league.getId();
String leagueId = String.valueOf(id);
holder.id.setText(leagueId);
holder.name.setText(league.getName());
}
//Formatting And Displaying Timestamp
holder.timestamp.setText(formatDate(league.getTimestamp()));
}
Это мой код для рекламного баннера
// Initialize the Mobile Ads SDK
//setContentView(R.layout.content_main);
MobileAds.initialize(this,
getString(R.string.admob_app_id));
// Find Banner ad
mAdView = findViewById(R.id.adView);
AdRequest adRequest = new AdRequest.Builder().build();
// Display Banner ad
mAdView.loadAd(adRequest);
}
Я не уверен, как включить рекламный код в порядок держателя просмотра, чтобы он работал.
Снова любая помощь будет оценена.
Код адаптера лиги (изменен)
public class LeagueAdapter extends RecyclerView.Adapter<LeagueAdapter.MyViewHolder> {
private Context context;
private List<League> leaguesList;
public void notifyDatasetChanged(List<League> newleagueslist) {
leaguesList.clear();
leaguesList.addAll(newleagueslist);
super.notifyDataSetChanged();
}
public class MyViewHolder extends RecyclerView.ViewHolder {
public TextView name;
private TextView leagueAverage;
public TextView id;
public TextView timestamp;
public MyViewHolder(View view) {
super(view);
id = view.findViewById( R.id.tvLeagueId);
name = view.findViewById(R.id.tvSeriesName );
leagueAverage = view.findViewById(R.id.tvLeagueAverage);
timestamp = view.findViewById(R.id.timestamp);
}
}
public LeagueAdapter(Context context, List<League> leaguesList) {
this.context = context;
this.leaguesList = leaguesList;
}
public static class ViewHolderAdMob extends RecyclerView.ViewHolder {
public AdView mAdView;
public ViewHolderAdMob(View view) {
super(view);
mAdView = (AdView) view.findViewById(R.id.adView);
AdRequest adRequest = new AdRequest.Builder()
.addTestDevice(AdRequest.DEVICE_ID_EMULATOR)
.build();
mAdView.loadAd(adRequest);
}
}
@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
//View itemView = LayoutInflater.from(parent.getContext())
// .inflate(R.layout.listview_league, parent, false);
RecyclerView.ViewHolder viewHolder;
viewHolder = null;
LayoutInflater inflater = LayoutInflater.from(parent.getContext());
switch(viewType){
case 1:{
View v = inflater.inflate(R.layout.listview_league, parent, false);
viewHolder = new MyViewHolder(v);
break;
}
case 2:{
View v = inflater.inflate(R.layout.listview_league_admob, parent, false);
viewHolder = new ViewHolderAdMob(v);
break;
}
}
//return (MyViewHolder) itemView;
return new MyViewHolder(viewHolder);
}
@Override
public void onBindViewHolder(MyViewHolder holder, int position) {
//League league = leaguesList.get(position);
League league1 = leaguesList.get(holder.getAdapterPosition());
switch(holder.getItemViewType()){
case 1:{
MyViewHolder viewHolder = (MyViewHolder) holder;
viewHolder.name.setText(league1.getName());
viewHolder.timestamp.setText(formatDate(league1.getTimestamp()));
break;
}
case 2:{
break;
}
}
}
@Override
public int getItemCount() {
return leaguesList.size();
}
//Formatting TimeStamp to 'EEE MMM dd yyyy (HH:mm:ss)'
//Input : 2018-05-23 9:59:01
//Output : Wed May 23 2018 (9:59:01)
private String formatDate(String dateStr) {
try {
SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = fmt.parse(dateStr);
SimpleDateFormat fmtOut = new SimpleDateFormat("EEE MMM dd yyyy (HH:mm:ss)");
return fmtOut.format(date);
} catch (ParseException e) {
}
return "";
}
}
Макет XML
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:ads="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
xmlns:autofit="http://schemas.android.com/apk/res-auto"
android:clickable="true"
android:foreground="?attr/selectableItemBackground"
android:paddingBottom="@dimen/dimen_10"
android:paddingLeft="@dimen/activity_margin"
android:paddingRight="@dimen/activity_margin"
android:paddingTop="@dimen/dimen_10"
android:focusable="true">
<me.grantland.widget.AutofitTextView
android:id="@+id/tvSeriesName"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:maxLines="2"
android:singleLine="true"
android:text="@string/leagueValue"
android:textColor="?attr/colorText1"
android:textSize="24sp"
autofit:minTextSize="16sp" />
<TextView
android:id="@+id/tvLeagueAverage"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentStart="true"
android:layout_below="@+id/tvSeriesName"
android:layout_marginStart="0dp"
android:text="League Average: 300"
android:textColor="#000000"
android:textSize="18sp"
android:visibility="gone" />
<TextView
android:id="@+id/timestamp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/tvSeriesName"
android:layout_centerHorizontal="true"
android:text="Fri May 18 2018"
android:textColor="?attr/colorText1"
android:textSize="10sp"
android:visibility="gone" />
<TextView
android:id="@+id/tvLeagueId"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignEnd="@+id/tvSeriesName"
android:layout_below="@+id/timestamp"
android:text="TextView"
android:textColor="?attr/colorText1"
android:visibility="gone" />
<!-- set Banner ad position in UI layout design -->
<com.google.android.gms.ads.AdView
xmlns:ads="http://schemas.android.com/apk/res-auto"
android:id="@+id/adView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="false"
android:layout_centerHorizontal="true"
ads:adSize="BANNER"
ads:adUnitId="@string/admob_banner_id" />
</RelativeLayout>