【发布时间】:2021-10-07 14:05:24
【问题描述】:
这是用于在 firebase 数据库的 recyclerview 中显示项目的 Activity。在活动中,我还放置了我的原生广告代码,但我的广告没有在每 5 个项目后正确显示。在 recyclerview 中每次卡片浏览后,广告总是会在几秒钟内一一加载。
请帮助我解决问题,我希望我的广告能够使用下面显示的代码正确显示在我的回收站视图中。
public class HOME_RV_BUS_ACTIVITY extends AppCompatActivity {
EditText inputSearch;
RecyclerView recyclerView;
private Toolbar toolbar;
FirebaseRecyclerOptions<BusModel> options;
FirebaseRecyclerAdapter<BusModel,BusViewHolder> adapter;
DatabaseReference Dataref;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); // To remove status Bar
setContentView(R.layout.activity_home__rv__bus__activity);
toolbar = (Toolbar) findViewById(R.id.myToolbar);
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true); //To show back arrow
getSupportActionBar().setHomeAsUpIndicator(R.drawable.ic_black_keyboard_arrow);//customize my own back arrow color
getSupportActionBar().setTitle(Html.fromHtml("<font color=\"#000000\">" + "List Of InterCity Buses" +"</font>")); //change title on your own choice and also change it's color also
Dataref = FirebaseDatabase.getInstance().getReference().child("Bus");
inputSearch = findViewById(R.id.inputSearch);
recyclerView = findViewById(R.id.recyclerView);
recyclerView.setLayoutManager(new LinearLayoutManager(getApplicationContext()));
recyclerView.setHasFixedSize(true);
LoadData("");
inputSearch.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void afterTextChanged(Editable s) {
if (s.toString()!=null)
{
LoadData(s.toString());
}
else
{
LoadData("");
}
}
});
}//onCreate end
private void LoadData(String data) {
Query query=Dataref.orderByChild("BusName").startAt(data).endAt(data+"\uf8ff");
options=new FirebaseRecyclerOptions.Builder<BusModel>().setQuery(query,BusModel.class).build();
adapter=new FirebaseRecyclerAdapter<BusModel, BusViewHolder>(options) {
@Override
protected void onBindViewHolder(@NonNull BusViewHolder holder, final int position, @NonNull BusModel model) {
/////////////////////NativeAd////////////////////////////
/* MobileAds.initialize(this, new OnInitializationCompleteListener() {
@Override
public void onInitializationComplete(InitializationStatus initializationStatus) {*/
if (position % 5 == 0) {
AdLoader.Builder builder = new AdLoader.Builder(HOME_RV_BUS_ACTIVITY.this, "ca-app-pub-3940256099942544/2247696110");
builder.forNativeAd(new NativeAd.OnNativeAdLoadedListener() {
@Override
public void onNativeAdLoaded(NativeAd nativeAd) {
Log.d("TAG", "OnNativeAdLoaded");
if (isDestroyed()) {
nativeAd.destroy();
return;
}
NativeTemplateStyle styles = new
NativeTemplateStyle.Builder().build();
TemplateView template = findViewById(R.id.my_template);
template.setStyles(styles);
template.setVisibility(View.VISIBLE);
template.setNativeAd(nativeAd);
}
});
builder.withAdListener(new AdListener() {
@Override
public void onAdFailedToLoad(LoadAdError adError) {
// Handle the failure by logging, altering the UI, and so on.
}
});
builder.withNativeAdOptions(new NativeAdOptions.Builder()
// Methods in the NativeAdOptions.Builder class can be
// used here to specify individual options settings.
.build());
AdLoader adLoader = builder
.build();
adLoader.loadAd(new AdRequest.Builder().build());
holder.templateView.setVisibility(View.VISIBLE);
}
/* }
});*/
///////////////////////Native Ad End////////////////////
holder.textView.setText(model.getBusName());
Picasso.get().load(model.getImageUrl()).into(holder.imageView);
holder.v.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(HOME_RV_BUS_ACTIVITY.this, BusPicViewActivity.class);
intent.putExtra("BusKey", getRef(position).getKey());
startActivity(intent);
}
});
}
@NonNull
@Override
public BusViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.single_view_bus,parent,false);
return new BusViewHolder(v);
}
};
adapter.startListening();
recyclerView.setAdapter(adapter);
}
}
这是模型类
public class BusModel {
private String BusName;
private String ImageUrl;
public BusModel(String busName, String imageUrl) {
BusName = busName;
ImageUrl = imageUrl;
}
public BusModel() {
}
public String getBusName() {
return BusName;
}
public void setBusName(String busName) {
BusName = busName;
}
public String getImageUrl() {
return ImageUrl;
}
public void setImageUrl(String imageUrl) {
ImageUrl = imageUrl;
}
}
这是我也放置广告模板视图的 ViewHolder
public class BusViewHolder extends RecyclerView.ViewHolder {
ImageView imageView;
TextView textView;
View v;
TemplateView templateView;
public BusViewHolder(@NonNull View itemView) {
super(itemView);
imageView=itemView.findViewById(R.id.image_single_view);
textView=itemView.findViewById(R.id.textView_single_view);
templateView = itemView.findViewById(R.id.my_template);
v = itemView;
}
}
【问题讨论】:
标签: java firebase android-studio android-recyclerview native-ads