Android studio 向静态ViewHolder类传递position或arraylist时出错

Android studio 向静态ViewHolder类传递position或arraylist时出错,android-studio,arraylist,android-recyclerview,static-methods,android-viewholder,Android Studio,Arraylist,Android Recyclerview,Static Methods,Android Viewholder,由于我的viewholder类是静态的,所以不知何故,我的arraylist没有获取数据,它是空的。错误为索引:0,大小:0。我认为这可能是由于静态提醒和视图持有者造成的。我需要position或arraylist在我的holder类中,这样我就可以实现对项目position的单击侦听器。所以,如果有人可以帮助我,请 我的适配器类 public class Adapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {

由于我的viewholder类是静态的,所以不知何故,我的arraylist没有获取数据,它是空的。错误为索引:0,大小:0。我认为这可能是由于静态提醒和视图持有者造成的。我需要position或arraylist在我的holder类中,这样我就可以实现对项目position的单击侦听器。所以,如果有人可以帮助我,请

我的适配器类

public class Adapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {

ArrayList<Model> arrayList;
Context context;
int total_types;
private static final String TAG = "RecyclerAdapter";
com.example.caretaker.Database.database database;


public Adapter(ArrayList<Model> arrayList, Context context) {
    this.arrayList = arrayList;
    this.context = context;
    this.total_types = arrayList.size();
}

@NonNull
@Override
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
    View view;
    switch (viewType) {
        case Model.HOME_FRAGMENT:
view = LayoutInflater.from(parent.getContext()).
inflate(R.layout.reminder_sample_for_recycler_view_home_screen, parent, false);
            return new Home_ViewHolder(view);
            return new Home_ViewHolder(view);
        case Model.REMINDER_FRAGMENT:
            view = 
LayoutInflater.from(parent.getContext()).inflate(R.layout.reminder_sample_for_recycler_view, parent, 
false);
            return new Reminder_ViewHolder(view);
    }

    return null;
}

@Override
public int getItemViewType(int position) {
    switch (arrayList.get(position).ViewType) {
        case 0:
            return Model.HOME_FRAGMENT;
        case 1:
            return Model.REMINDER_FRAGMENT;
    }
    return 0;
}

@Override
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {
    Model model = arrayList.get(position);
    database = new database(context);

    if (model != null) {
        switch (model.ViewType) {
            case Model.HOME_FRAGMENT:
                //((BannerTypeViewHolder) holder).bannerImg.setBackgroundResource(R.drawable.banner);

                break;
            case Model.REMINDER_FRAGMENT:
                ((Reminder_ViewHolder) holder).title.setText(model.getName());
                ((Reminder_ViewHolder) holder).time.setText(model.getTime());
                ((Reminder_ViewHolder) holder).date.setText(model.getDate());
                ((Reminder_ViewHolder) holder).set_doasge.setText("Medicine Dose is " + 
model.getDose() + " mg");


                // Code for setting up the Medicine Type
                String name = ((Reminder_ViewHolder) holder).title.getText().toString();
                Cursor cursor = database.getAllItems(name);
                ((Reminder_ViewHolder) holder).mediType = -1;

                while (cursor.moveToNext()) {
                    ((Reminder_ViewHolder) holder).mediType = cursor.getInt(5);
                }

                Log.e(TAG, "mediType is " + ((Reminder_ViewHolder) holder).mediType);

                if (((Reminder_ViewHolder) holder).mediType == 1) {
                    ((Reminder_ViewHolder) 
holder).mediType_view.setBackgroundResource(R.drawable.ic_syrup_icon);
                    Log.e(TAG, "Image view is set to syrup");
                } else if (((Reminder_ViewHolder) holder).mediType == 2) {
                    ((Reminder_ViewHolder) 
holder).mediType_view.setBackgroundResource(R.drawable.ic_pill_icon);
                    Log.e(TAG, "Image view is set to pill");
                } else if (((Reminder_ViewHolder) holder).mediType == 3) {
                    ((Reminder_ViewHolder) 
holder).mediType_view.setBackgroundResource(R.drawable.ic_syringe_icon);
                    Log.e(TAG, "Image view is set to syringe");
                } else if (((Reminder_ViewHolder) holder).mediType == 4) {
                    ((Reminder_ViewHolder) 
holder).mediType_view.setBackgroundResource(R.drawable.ic_tablet_icon);
                    Log.e(TAG, "Image view is set to tablet");
                } else {
                    Log.e(TAG, "Image view is set to nothing");
                }

                // Medicine Type code Ended Up here.


                boolean isExpanded = arrayList.get(position).isExpanded();
                ((Reminder_ViewHolder) holder).expandableLayout.setVisibility(isExpanded ? 
View.VISIBLE : View.GONE);
                break;
        }
    }
}

@Override
public int getItemCount() {
    return arrayList.size();
}

public static class Home_ViewHolder extends RecyclerView.ViewHolder {
    public Home_ViewHolder(@NonNull View itemView) {
        super(itemView);
    }
}

public static class Reminder_ViewHolder extends RecyclerView.ViewHolder {

    TextView title, time, date, set_doasge;
    Button cancel_alarm, update_alarm;
    ImageView mediType_view;
    int mediType;
    ArrayList<Model> arrayList;
    database database;
    ConstraintLayout expandableLayout;

    public Reminder_ViewHolder(@NonNull View itemView) {
        super(itemView);
        title = itemView.findViewById(R.id.alarm_title);
        time = itemView.findViewById(R.id.alarm_time);
        date = itemView.findViewById(R.id.alarm_date);
        set_doasge = itemView.findViewById(R.id.set_dosage);
        update_alarm = itemView.findViewById(R.id.update_button);
        cancel_alarm = itemView.findViewById(R.id.cancel_button);
        expandableLayout = itemView.findViewById(R.id.expandableLayout);
        mediType_view = itemView.findViewById(R.id.mediType_view);
        Context context = itemView.getContext();
        arrayList = new ArrayList<>();


        title.setOnClickListener(v -> {
            Model model = arrayList.get(getAdapterPosition());
            model.setExpanded(!model.isExpanded());
        });

        cancel_alarm.setOnClickListener(v -> {


            String text = title.getText().toString();
            Cursor cursor = database.getAllItems(text);

            String title = null, date = null, time = null;
            int requestCode = -1, dosage = -1;
            mediType = -1;

            while (cursor.moveToNext()) {
                title = cursor.getString(0);
                time = cursor.getString(1);
                date = cursor.getString(2);
                dosage = cursor.getInt(3);
                requestCode = cursor.getInt(4);
                mediType = cursor.getInt(5);

            }
            if (title != null && time != null && date != null && dosage != -1 && requestCode != -1) {


                Intent intent = new Intent(context, Deletion_of_Alarm.class);


                intent.putExtra("title", title);
                intent.putExtra("date", date);
                intent.putExtra("time", time);
                intent.putExtra("dosage", dosage);
                intent.putExtra("requestCode", requestCode);

                Log.e(TAG, "title is " + title);
                Log.e(TAG, "date is " + date);
                Log.e(TAG, "time is " + time);
                Log.e(TAG, "dosage  is " + dosage);
                Log.e(TAG, "requestCode is " + requestCode);
                context.startActivity(intent);
            } else if (title == null && time == null && date == null && dosage == -1 && requestCode 
== -1) {
                CustomToast.warningToast(context, "Alarm doesn't exits anymore. Swipe down to 
refresh");
               }
           });
       }
   }
}
现在,我的主要活动中的部分代码是:

arrayList = db.ViewData();
    recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
    recyclerView.setHasFixedSize(true);
    recyclerAdapter = new com.example.caretaker.RecyclerView.Adapter(arrayList, getActivity());
    recyclerView.setAdapter(recyclerAdapter);
    recyclerAdapter.notifyDataSetChanged();
arrayList = db.ViewData();
    recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
    recyclerView.setHasFixedSize(true);
    recyclerAdapter = new com.example.caretaker.RecyclerView.Adapter(arrayList, getActivity());
    recyclerView.setAdapter(recyclerAdapter);
    recyclerAdapter.notifyDataSetChanged();