简体   繁体   English

我的名单总是 Null。我做错了什么?

[英]My list always Null. What am I doing wrong?

I am doing some kind of Medication Reminder App for our school and I am trying to create an Expandable RecyclerView based on a video I watch and practically followed step by step.我正在为我们学校做某种药物提醒应用程序,我正在尝试根据我观看的视频创建一个可扩展的 RecyclerView,并且实际上是一步一步地遵循。 Did everything practically the same but we created a Database instead of just fixed values.一切几乎都一样,但我们创建了一个数据库,而不仅仅是固定值。 The problem I have is that after initializing in the Main Activity, my list value is always Null and that my adapter is returning a NULL. What am I doing wrong?我遇到的问题是,在主活动中初始化后,我的列表值始终为 Null,而我的适配器返回 NULL。我做错了什么?

Here is my code.这是我的代码。

MediReminders.java I've decided to remove this because its just a bunch of getters and setters MediReminders.java 我决定删除它,因为它只是一堆 getter 和 setter

MedAdapters.java MedAdapters.java

public class MedAdapters extends RecyclerView.Adapter<MedAdapters.MediRemindersVH> {公共 class MedAdapters 扩展 RecyclerView.Adapter<MedAdapters.MediRemindersVH> {

List<MediReminders> MedList;

public MedAdapters(List<MediReminders> MedList) {
    this.MedList = MedList;
}

@NonNull
@Override
public MedAdapters.MediRemindersVH onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
    View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.row,parent,false);
    return new MediRemindersVH(view);
}

@Override
public void onBindViewHolder(@NonNull MedAdapters.MediRemindersVH holder, int position) {

    MediReminders mediReminders = MedList.get(position);
    holder.med_nameTxt.setText(mediReminders.getMed_name());
    holder.med_typeTxt.setText(mediReminders.getMed_type());
    holder.fromdatedetailTxt.setText(mediReminders.getFromDatedetail());
    holder.todatedetailTxt.setText(mediReminders.getToDatedetail());
    holder.timedetailTxt.setText(mediReminders.getTimedetail());
    holder.whendetailTxt.setText(mediReminders.getWhendetail());
    holder.notesdetailTxt.setText(mediReminders.getNotesdetail());

    boolean isExpandable = MedList.get(position).isExpandable();
    holder.expandableLayout.setVisibility(isExpandable ? View.VISIBLE : View.GONE);

}

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

public class MediRemindersVH extends RecyclerView.ViewHolder {

    TextView med_nameTxt, med_typeTxt, fromdatedetailTxt, todatedetailTxt, timedetailTxt, whendetailTxt, notesdetailTxt;
    LinearLayout linearLayout;
    RelativeLayout expandableLayout;



    public MediRemindersVH(@NonNull View itemView) {
        super(itemView);

        med_nameTxt = itemView.findViewById(R.id.medname);
        med_typeTxt = itemView.findViewById(R.id.auto_complete_txt);
        fromdatedetailTxt = itemView.findViewById(R.id.fromdate);
        todatedetailTxt = itemView.findViewById(R.id.todate);
        timedetailTxt = itemView.findViewById(R.id.datetime);
        whendetailTxt = itemView.findViewById(R.id.radioGroup);
        notesdetailTxt = itemView.findViewById(R.id.notes);

        linearLayout = itemView.findViewById(R.id.linear_layout);
        expandableLayout = itemView.findViewById(R.id.expandable_layout);

        linearLayout.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                MediReminders mediReminders = MedList.get(getAdapterPosition());
                mediReminders.setExpandable(!mediReminders.isExpandable());
                notifyItemChanged(getAdapterPosition());
            }
        });
    }
}

} }

MainActivity.java MainActivity.java

public class MainActivity extends AppCompatActivity {公共 class MainActivity 扩展 AppCompatActivity {

RecyclerView recyclerView;

List<MediReminders> MedList;
MedAdapters adapter = new MedAdapters(MedList);

ImageButton addNewButton;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);


    recyclerView = findViewById(R.id.MedList);
    
        setContentView(R.layout.activity_main_list);
        initData();
        setRecyclerView();
    }


    private void setRecyclerView () {

        //problem is specifically this one...
        recyclerView.setAdapter(adapter);
        
        recyclerView.setHasFixedSize(true);
    }


    private void initData () {
        MedList = new ArrayList<>();

        MedList.add(new MediReminders("Paracetamol", "Tablet", "Apr 26, 2022", "May 9,2022", "6:30 PM", "Before Meal", "Take in water first"));
    }
}

First, Try to check your application with Fixed hard coded values.首先,尝试使用固定的硬编码值检查您的应用程序。 If it's working fine.如果它工作正常。

Second, run and check your database query on some dbms tool.其次,在某些 dbms 工具上运行并检查您的数据库查询。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM