簡體   English   中英

我的名單總是 Null。我做錯了什么?

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

我正在為我們學校做某種葯物提醒應用程序,我正在嘗試根據我觀看的視頻創建一個可擴展的 RecyclerView,並且實際上是一步一步地遵循。 一切幾乎都一樣,但我們創建了一個數據庫,而不僅僅是固定值。 我遇到的問題是,在主活動中初始化后,我的列表值始終為 Null,而我的適配器返回 NULL。我做錯了什么?

這是我的代碼。

MediReminders.java 我決定刪除它,因為它只是一堆 getter 和 setter

MedAdapters.java

公共 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

公共 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"));
    }
}

首先,嘗試使用固定的硬編碼值檢查您的應用程序。 如果它工作正常。

其次,在某些 dbms 工具上運行並檢查您的數據庫查詢。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM