获取 RecyclerView item 点击次数
Get RecyclerView item click count
我在我的 android 应用程序中使用 recyclerview,我想在我的应用程序中展示广告,我知道如何展示广告,但我想做的是获取 recyclerview 项目计数,这样如果用户点击比如说我想展示 admob 插页式广告的两个项目。我搜索了很多但无法弄清楚
这是我的代码
public class DictionaryAdapter extends RecyclerView.Adapter <DictionaryAdapter.ViewHolder> {
private Cursor cursor;
public DictionaryAdapter() {
}
public void setCursor(Cursor cursor) {
this.cursor = cursor;
}
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int position) {
Context context = parent.getContext();
LayoutInflater inflater = LayoutInflater.from(context);
View v = inflater.inflate(R.layout.dictionary_item_layout, parent, false);
ViewHolder viewHolder = new ViewHolder(v, context);
return viewHolder;
}
@Override
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
cursor.moveToPosition(position);
holder.word.setText(cursor.getString(1));
}
@Override
public int getItemCount() {
if (cursor == null) return 0;
return cursor.getCount();
}
public class ViewHolder extends RecyclerView.ViewHolder {
Context context;
TextView word;
public ViewHolder(@NonNull View itemView, final Context context) {
super(itemView);
this.context = context;
word = itemView.findViewById(R.id.wordText);
itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int position = getAdapterPosition();
cursor.moveToPosition(position);
Intent intent = new Intent(context, DetailActivity.class);
intent.putExtra("ID", cursor.getString(0));
intent.putExtra("WORD", cursor.getString(1));
intent.putExtra("DEFINITION", cursor.getString(2));
context.startActivity(intent);
}
});
}
}
}
Example image
这是我的主要方法activity
preferences = getSharedPreferences("click_count",MODE_PRIVATE);
if (preferences.getInt("count", 0) > 2) {
mInterstitialAd = new InterstitialAd(this);
mInterstitialAd.setAdUnitId("ca-app-pub-3940256099942544/1033173712");
mInterstitialAd.loadAd(new AdRequest.Builder().build());
mInterstitialAd.setAdListener(new AdListener() {
public void onAdLoaded() {
if (mInterstitialAd.isLoaded()) {
mInterstitialAd.show();
}
}
});
editor = preferences.edit();
editor.clear();
editor.apply();
}
首先添加定义回收站视图项目点击监听器的接口
public interface ItemClickListener {
void onItemClicked();
}
//update adapter and view holder code as the following
public class DictionaryAdapter extends RecyclerView.Adapter <DictionaryAdapter.ViewHolder> implements ItemClickListener {
private Cursor cursor;
private int clickCount = 0;
public DictionaryAdapter() {
}
public void setCursor(Cursor cursor) {
this.cursor = cursor;
}
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int position) {
Context context = parent.getContext();
LayoutInflater inflater = LayoutInflater.from(context);
View v = inflater.inflate(R.layout.dictionary_item_layout, parent, false);
ViewHolder viewHolder = new ViewHolder(v, context, this);
return viewHolder;
}
@Override
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
cursor.moveToPosition(position);
holder.word.setText(cursor.getString(1));
}
@Override
public int getItemCount() {
if (cursor == null) return 0;
return cursor.getCount();
}
@Override
public void onItemClicked() {
clickCount++;
//Do whatever you want based on the click count.
}
public class ViewHolder extends RecyclerView.ViewHolder {
Context context;
TextView word;
public ViewHolder(@NonNull View itemView, final Context context, ItemClickListener itemClickListener) {
super(itemView);
this.context = context;
word = itemView.findViewById(R.id.wordText);
itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int position = getAdapterPosition();
cursor.moveToPosition(position);
Intent intent = new Intent(context, DetailActivity.class);
intent.putExtra("ID", cursor.getString(0));
intent.putExtra("WORD", cursor.getString(1));
intent.putExtra("DEFINITION", cursor.getString(2));
context.startActivity(intent);
if(itemClickListener != null) {
itemClickListener.onItemClicked();
}
}
});
}
}
}
您可以简单地将点击次数保存在 SharedPreference
中。首先将 context
传递给您的适配器。
private Context mContext;
public DictionaryAdapter(Context mContext) {
this.mContext = mContext;
}
然后将以下方法添加到适配器:
private void addClick(Context mContext) {
int click = getClicksCount(mContext)+1;
SharedPreferences preferences = mContext.getSharedPreferences("click_count", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = preferences.edit();
editor.putInt("count", click);
editor.apply();
}
private int getClicksCount(Context mContext){
SharedPreferences preferences = mContext.getSharedPreferences("click_count",Context.MODE_PRIVATE);
return preferences.getInt("count",0);
}
最后,使用它们。您的 itemView clickListener 将类似于:
itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
addClick(mContext);
int position = getAdapterPosition();
cursor.moveToPosition(position);
Intent intent = new Intent(context, DetailActivity.class);
intent.putExtra("ID", cursor.getString(0));
intent.putExtra("WORD", cursor.getString(1));
intent.putExtra("DEFINITION", cursor.getString(2));
context.startActivity(intent);
}
});
您可以通过调用 int count = getClicksCount(mContext);
方法获取点击次数。
我在我的 android 应用程序中使用 recyclerview,我想在我的应用程序中展示广告,我知道如何展示广告,但我想做的是获取 recyclerview 项目计数,这样如果用户点击比如说我想展示 admob 插页式广告的两个项目。我搜索了很多但无法弄清楚 这是我的代码
public class DictionaryAdapter extends RecyclerView.Adapter <DictionaryAdapter.ViewHolder> {
private Cursor cursor;
public DictionaryAdapter() {
}
public void setCursor(Cursor cursor) {
this.cursor = cursor;
}
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int position) {
Context context = parent.getContext();
LayoutInflater inflater = LayoutInflater.from(context);
View v = inflater.inflate(R.layout.dictionary_item_layout, parent, false);
ViewHolder viewHolder = new ViewHolder(v, context);
return viewHolder;
}
@Override
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
cursor.moveToPosition(position);
holder.word.setText(cursor.getString(1));
}
@Override
public int getItemCount() {
if (cursor == null) return 0;
return cursor.getCount();
}
public class ViewHolder extends RecyclerView.ViewHolder {
Context context;
TextView word;
public ViewHolder(@NonNull View itemView, final Context context) {
super(itemView);
this.context = context;
word = itemView.findViewById(R.id.wordText);
itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int position = getAdapterPosition();
cursor.moveToPosition(position);
Intent intent = new Intent(context, DetailActivity.class);
intent.putExtra("ID", cursor.getString(0));
intent.putExtra("WORD", cursor.getString(1));
intent.putExtra("DEFINITION", cursor.getString(2));
context.startActivity(intent);
}
});
}
}
}
Example image
这是我的主要方法activity
preferences = getSharedPreferences("click_count",MODE_PRIVATE);
if (preferences.getInt("count", 0) > 2) {
mInterstitialAd = new InterstitialAd(this);
mInterstitialAd.setAdUnitId("ca-app-pub-3940256099942544/1033173712");
mInterstitialAd.loadAd(new AdRequest.Builder().build());
mInterstitialAd.setAdListener(new AdListener() {
public void onAdLoaded() {
if (mInterstitialAd.isLoaded()) {
mInterstitialAd.show();
}
}
});
editor = preferences.edit();
editor.clear();
editor.apply();
}
首先添加定义回收站视图项目点击监听器的接口
public interface ItemClickListener {
void onItemClicked();
}
//update adapter and view holder code as the following
public class DictionaryAdapter extends RecyclerView.Adapter <DictionaryAdapter.ViewHolder> implements ItemClickListener {
private Cursor cursor;
private int clickCount = 0;
public DictionaryAdapter() {
}
public void setCursor(Cursor cursor) {
this.cursor = cursor;
}
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int position) {
Context context = parent.getContext();
LayoutInflater inflater = LayoutInflater.from(context);
View v = inflater.inflate(R.layout.dictionary_item_layout, parent, false);
ViewHolder viewHolder = new ViewHolder(v, context, this);
return viewHolder;
}
@Override
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
cursor.moveToPosition(position);
holder.word.setText(cursor.getString(1));
}
@Override
public int getItemCount() {
if (cursor == null) return 0;
return cursor.getCount();
}
@Override
public void onItemClicked() {
clickCount++;
//Do whatever you want based on the click count.
}
public class ViewHolder extends RecyclerView.ViewHolder {
Context context;
TextView word;
public ViewHolder(@NonNull View itemView, final Context context, ItemClickListener itemClickListener) {
super(itemView);
this.context = context;
word = itemView.findViewById(R.id.wordText);
itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int position = getAdapterPosition();
cursor.moveToPosition(position);
Intent intent = new Intent(context, DetailActivity.class);
intent.putExtra("ID", cursor.getString(0));
intent.putExtra("WORD", cursor.getString(1));
intent.putExtra("DEFINITION", cursor.getString(2));
context.startActivity(intent);
if(itemClickListener != null) {
itemClickListener.onItemClicked();
}
}
});
}
}
}
您可以简单地将点击次数保存在 SharedPreference
中。首先将 context
传递给您的适配器。
private Context mContext;
public DictionaryAdapter(Context mContext) {
this.mContext = mContext;
}
然后将以下方法添加到适配器:
private void addClick(Context mContext) {
int click = getClicksCount(mContext)+1;
SharedPreferences preferences = mContext.getSharedPreferences("click_count", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = preferences.edit();
editor.putInt("count", click);
editor.apply();
}
private int getClicksCount(Context mContext){
SharedPreferences preferences = mContext.getSharedPreferences("click_count",Context.MODE_PRIVATE);
return preferences.getInt("count",0);
}
最后,使用它们。您的 itemView clickListener 将类似于:
itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
addClick(mContext);
int position = getAdapterPosition();
cursor.moveToPosition(position);
Intent intent = new Intent(context, DetailActivity.class);
intent.putExtra("ID", cursor.getString(0));
intent.putExtra("WORD", cursor.getString(1));
intent.putExtra("DEFINITION", cursor.getString(2));
context.startActivity(intent);
}
});
您可以通过调用 int count = getClicksCount(mContext);
方法获取点击次数。