Получить RecyclerView элемент количество кликов - PullRequest
1 голос
/ 19 мая 2019

Я использую recyclerview в своем приложении для Android, и я хочу показывать рекламу в своем приложении, я знаю, как показывать рекламу, но я хочу получить счетчик повторных просмотров, так что если пользователь нажимает, например, два элемента, которые я хочу показать 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);


                }
            });

        }
    }
}

Пример изображения

Вот как я понимаю, моя основная деятельность

 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();
        }

Ответы [ 2 ]

0 голосов
/ 19 мая 2019

Вы можете просто сохранить количество кликов в 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);.

0 голосов
/ 19 мая 2019

Начните с добавления интерфейса, который определяет прослушиватель щелчка элемента просмотра представления

  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();
                    }

                }
            });

        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...