Как выполнять часть кода по одному в день в адаптере?

#android #android-recyclerview #android-adapter

#Android #android-recyclerview #android-адаптер

Вопрос:

Я хотел бы выполнять часть кода по одному в день. Для достижения этой цели я использую SharedPreferences, и в основном код работает нормально, но он работает только для первого элемента в DataAdadpter. Я должен использовать этот фрагмент кода для всех элементов адаптера.

   Calendar calendar24h = Calendar.getInstance();
        int currentDay = calendar24h.get(Calendar.DAY_OF_MONTH);
        SharedPreferences settingsSharedPreferences = mCtx.getSharedPreferences("PREFS", 0);
        int lastDay = settingsSharedPreferences.getInt("day", 0);


        if (lastDay != currentDay) {


            SharedPreferences.Editor editor = settingsSharedPreferences.edit();
            editor.putInt("day", currentDay);
            editor.apply();


            holder.addProfit.setVisibility(View.VISIBLE);
            holder.addProfit.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {

                    holder.addProfit.setVisibility(View.GONE);
                    Toasty.success(mCtx,"Salary added to " holder.goalName.getText().toString(),Toasty.LENGTH_SHORT).show();
                }
            });

        }
  

Комментарии:

1. Эй, проводник, не совсем понятно, как структурирован код и чего вы пытаетесь достичь. Как правило, вы можете передать результат lastDay != currentDay как логическое значение адаптеру и использовать его как переменную во всех элементах с onBindView() функцией. Будет ли это работать для вас?

2. @Viktor Stojanov спасибо за ваш ответ. Не могли бы вы показать мне какой-нибудь пример этого?

3. Просто вычислите и сохраните lastDay != currentDay как переменную внутри адаптера и используйте ее внутри метода bind.