数据库中的某些项目未在cardview中显示

时间:2018-03-29 08:35:01

标签: java android xml android-recyclerview android-cardview

我遇到的问题是cardview没有在数据库中显示一些内容。

我的应用程序连接到带有PostgreSQL数据库的grails后端。

我在recyclerview中有一张cardview。它以JSON的形式接收7个值,但在运行应用程序时,只显示5个值。我尝试在堆栈跟踪中执行JSON的System.out,我发现所有7个值都被接收,所以在这方面一切正常。

为了清楚起见,未显示的字段是实验室("实验室")和管理的药物("药物管理")。

这是主类(ClinicalHistory.java),适配器类,xml和堆栈跟踪。

ClinicalHistory.java

public class ClinicalHistory extends AppCompatActivity {

    RecyclerView clinicalHistory_rv;
    SwipeRefreshLayout swipeRefreshLayout;
    List<com.example.user.eafya.models.ClinicalHistory> clinicalHistory_List;
    com.example.user.eafya.models.ClinicalHistory clinicalHistory;
    ClinicalHistoryAdapter clinicalHistoryAdapter;
    private StringRequest clinicalHistoryRequest;
    private LinearLayout no_data;
    private LinearLayoutManager linearLayoutManager;
    private RequestQueue requestQueue;
    private ProgressDialog pb;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_clinical_history);
        initWidgets();

        fetchData();


    }

    private void fetchData() {
        pb = new ProgressDialog(this);
        pb.setIcon(R.mipmap.ic_launcher);
        pb.setTitle("Please wait");
        pb.setCancelable(false);
        pb.setMessage("Loading data..");
        pb.show();
        clinicalHistoryRequest = new StringRequest(Request.Method.GET, Configs.URL_LOGIN + Configs.CLINICALHISTORY_PATH, new Response.Listener<String>() {
            @Override
            public void onResponse(String result) {
                pb.dismiss();
                System.out.print("======================================"+ result);



                try {
                    JSONObject jsonObject = new JSONObject(result);
                    JSONArray jsonArray = jsonObject.getJSONArray("mVisit");

                    for (int i=0;i<jsonArray.length();i++){
                        System.out.print("----------------"+jsonArray.getJSONObject(i).getString("labs"));

                    }



                    Log.d("myError: ", String.valueOf(jsonArray.length()));

                    if(jsonArray.length()<1) {
                        clinicalHistory_List.clear();
                        no_data.setVisibility(View.VISIBLE);

                    }else if( jsonArray.length()>0){
                        if(no_data.getVisibility()==View.VISIBLE){
                            no_data.setVisibility(View.GONE);
                        }

                        for(int i=0 ; i<jsonArray.length() ; i++){
                            JSONObject data = jsonArray.getJSONObject(i);
                            clinicalHistory = new com.example.user.eafya.models.ClinicalHistory();
                            clinicalHistory.setDate(data.getString("dateCreated"));
                            clinicalHistory.setHospital(data.getString("hospitalAttended"));
                            clinicalHistory.setDoctor(data.getString("attendingDoctor"));

                            clinicalHistory.setLabs(data.getString("labs"));
                            clinicalHistory.setChiefComplains(data.getString("chiefComplains"));

                            clinicalHistory.setDrugs(data.getString("drugsAdministered"));

                            clinicalHistory_List.add(clinicalHistory);
                        }
                        clinicalHistoryAdapter = new ClinicalHistoryAdapter(ClinicalHistory.this, clinicalHistory_List);

                        linearLayoutManager = new LinearLayoutManager(ClinicalHistory.this);

                        clinicalHistory_rv.setLayoutManager(linearLayoutManager);
                        clinicalHistory_rv.setItemAnimator(new DefaultItemAnimator());
                        clinicalHistory_rv.setAdapter(clinicalHistoryAdapter);
                        clinicalHistory_rv.setSaveEnabled(true);
                        clinicalHistory_rv.setSaveFromParentEnabled(true);
                        clinicalHistoryAdapter.notifyDataSetChanged();
                    }


                } catch (JSONException e) {

                    Log.d("MaeraJ",e.toString());

                    e.printStackTrace();
                }
            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError volleyError) {
                pb.dismiss();
                AlertDialog.Builder dialog = new AlertDialog.Builder(ClinicalHistory.this);
                dialog.setTitle("Something went wrong !!");
                dialog.setCancelable(true);
                dialog.setIcon(R.mipmap.ic_launcher);
                dialog.setMessage("Check your data connection");
                dialog.setPositiveButton("RETRY", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialogInterface, int i) {
                        //retry
                        dialogInterface.dismiss();
                        fetchData();
                    }
                });
                dialog.setNegativeButton("CANCEL", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialogInterface, int i) {
                        //cancel
                        dialogInterface.dismiss();

                    }
                });
                dialog.create();

                dialog.show();
                Log.d("Maera",volleyError.toString());
            }
        });
        requestQueue.add(clinicalHistoryRequest);

    }

    private void initWidgets() {
        requestQueue = Volley.newRequestQueue(this);
        no_data = findViewById(R.id.nodata_LY);
        clinicalHistory_rv = findViewById(R.id.clinicalHistory_RV);
        clinicalHistory_List = new ArrayList<>();
        swipeRefreshLayout = findViewById(R.id.swipeContainer);
        swipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
            @Override
            public void onRefresh() {
                refresh();
            }

        });
    }

    private void refresh() {
        try {

            clinicalHistory_List.clear();

            fetchData();
            swipeRefreshLayout.setRefreshing(false);
        } catch (Exception e) {
            e.printStackTrace();

        }
    }
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch(item.getItemId()){
            case R.id.home:
                onBackPressed();
                break;
        }
        return super.onOptionsItemSelected(item);

    }
}

适配器类(ClinicalHistoryAdapter.java)

public class ClinicalHistoryAdapter extends RecyclerView.Adapter<ClinicalHistoryAdapter.myViewHolder> {
    Context ctx;
    List<ClinicalHistory> clinicalHistoryList;
    ClinicalHistory clinicalHistoryModel;
    LayoutInflater inflater;


    public ClinicalHistoryAdapter(Context ctx, List<ClinicalHistory> clinicalHistoryList) {
        this.ctx = ctx;
        this.clinicalHistoryList = clinicalHistoryList;
        inflater = LayoutInflater.from(ctx);
    }

    public class myViewHolder extends RecyclerView.ViewHolder {
        TextView clinicalHist_date_TV,clinicalHist_hospital, clinicalHist_doctor,clinicalHist_chiefComplains, clinicalHist_labs, clinicalHist_drugs;
        ImageView clinicalHist_img;
        public myViewHolder(View itemView) {
            super(itemView);
            clinicalHist_img = itemView.findViewById(R.id.clinicalHist_image_IV);
            clinicalHist_date_TV = itemView.findViewById(R.id.clinicalHist_date__TV);
            clinicalHist_hospital = itemView.findViewById(R.id.clinicalHist_hospital_TV);
            clinicalHist_doctor = itemView.findViewById(R.id.clinicalHist_doctor);
            clinicalHist_chiefComplains = itemView.findViewById(R.id.clinicalHist_chief_complains_TV);
            clinicalHist_labs = itemView.findViewById(R.id.clinicalHist_labs_TV);
            clinicalHist_drugs = itemView.findViewById(R.id.clinicalHist_drugs_TV);


        }

    }

    @Override
    public ClinicalHistoryAdapter.myViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
        View my_view = inflater.inflate(R.layout.clinical_history_item,viewGroup,false);

        return new myViewHolder(my_view);
    }

    @Override
    public void onBindViewHolder(ClinicalHistoryAdapter.myViewHolder myViewHolder, final int position) {
        clinicalHistoryModel = new ClinicalHistory();
        clinicalHistoryModel = clinicalHistoryList.get(position);

        myViewHolder.clinicalHist_date_TV.setText(clinicalHistoryModel.getDate());
        myViewHolder.clinicalHist_hospital.setText(clinicalHistoryModel.getHospital());
        myViewHolder.clinicalHist_doctor.setText(clinicalHistoryModel.getDoctor());
        myViewHolder.clinicalHist_chiefComplains.setText(clinicalHistoryModel.getChiefComplains());
        myViewHolder.clinicalHist_labs.setText(clinicalHistoryModel.getLabs());
        myViewHolder.clinicalHist_drugs.setText(clinicalHistoryModel.getDrugs());






        myViewHolder.clinicalHist_doctor.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                goToDetails(position);
            }
        });

        myViewHolder.clinicalHist_hospital.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                goToDetails(position);
            }
        });
        Glide.with(ctx).load(clinicalHistoryModel.getImg()).placeholder(R.drawable.loader).error(R.drawable.header).into(myViewHolder.clinicalHist_img);



    }

    private void goToDetails(int pos) {
        clinicalHistoryModel = clinicalHistoryList.get(pos);
        Intent intent = new Intent(ctx,MedicalDetailActivity.class);
        intent.putExtra("dateCreated", clinicalHistoryModel.getDate());
        intent.putExtra("clinicalHist_img", clinicalHistoryModel.getImg());
        intent.putExtra("hospitalAttended", clinicalHistoryModel.getHospital());
        intent.putExtra("attendingDoctor", clinicalHistoryModel.getDoctor());
        intent.putExtra("chiefComplaints", clinicalHistoryModel.getChiefComplains());
        intent.putExtra("labs", clinicalHistoryModel.getLabs());
        intent.putExtra("drugs", clinicalHistoryModel.getLabs());
        ctx.startActivity(intent);
    }

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

xml文件

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="wrap_content"

    android:padding="4dp">
    <android.support.v7.widget.CardView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
       >
        <LinearLayout
            android:orientation="vertical"
            android:layout_width="match_parent"
            android:layout_height="wrap_content">
            <LinearLayout
                android:layout_margin="2dp"
                android:orientation="horizontal"
                android:padding="2dp"
                android:layout_width="match_parent"
                android:layout_height="wrap_content">

                <ImageView

                    android:id="@+id/clinicalHist_image_IV"
                    android:layout_width="110dp"
                    android:layout_height="80dp"
                    android:layout_gravity="top"
                    android:scaleType="fitXY"
                    android:src="@drawable/header" />
                <LinearLayout
                    android:padding="4dp"
                    android:orientation="vertical"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content">
                    <TextView
                        android:textAlignment="textStart"
                        android:layout_gravity="start"
                        android:id="@+id/clinicalHist_date__TV"
                        android:text="21/09/2012"
                        android:textColor="@color/colorAccent"
                        android:textAppearance="@android:style/TextAppearance.DeviceDefault.Medium"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content" />


                    <TextView
                        android:textAlignment="textStart"
                        android:layout_gravity="start"
                        android:id="@+id/clinicalHist_hospital_TV"
                        android:text="Hema Hospital"
                        android:textColor="@color/colorAccent"
                        android:textAppearance="@android:style/TextAppearance.DeviceDefault.Medium"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content" />




                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:layout_gravity="start"
                            android:id="@+id/clinicalHist_doctor"
                            android:text="Dr.Lilian"/>

                    <TextView
                        android:layout_gravity="center"
                        android:id="@+id/clinicalHist_labs_TV"
                        android:text=" Brucella "
                        android:textColor="#000"
                        android:textAppearance="@android:style/TextAppearance.DeviceDefault.Medium"
                        android:layout_width="match_parent"
                        android:layout_height="match_parent" />





                    <TextView
                           android:layout_gravity="center"
                           android:id="@+id/clinicalHist_chief_complains_TV"
                           android:text=" Headache "
                           android:textColor="#000"
                           android:textAppearance="@android:style/TextAppearance.DeviceDefault.Medium"
                           android:layout_width="match_parent"
                           android:layout_height="match_parent" />

                    <TextView
                        android:layout_gravity="center"
                        android:id="@+id/clinicalHist_drugs_TV"
                        android:text=" Brufen "
                        android:textColor="#000"
                        android:textAppearance="@android:style/TextAppearance.DeviceDefault.Medium"
                        android:layout_width="match_parent"
                        android:layout_height="match_parent" />



                </LinearLayout>

            </LinearLayout>


        </LinearLayout>

    </android.support.v7.widget.CardView>

</LinearLayout>

堆栈跟踪

I/System.out: ======================================{"mVisit":[{"id":1,"chiefComplains":"Headache","dateCreated":"2017-08-11T21:00:00Z","labs":"Brucella","hospitalAttended":"Hema Hospital","drugsAdministered":"Tramadol","attendingDoctor":"Dr. Kisinga"

1 个答案:

答案 0 :(得分:0)

我找到了解决方案。问题出在模型中。

这是我以前的型号。注意中的参数 setDrugs()和setLabs()。

public class ClinicalHistory {
    String img;
    String date;
    String labs;
    String hospital;
    String chiefComplains;
    String doctor;
    String drugs;


    public ClinicalHistory() {
    }

    public String getImg() {
        return img;
    }

    public void setImg(String img) {
        this.img = img;
    }

    public String getHospital() {
        return this.hospital = hospital ;
    }

    public void setHospital(String hospital) {
        this.hospital = hospital;
    }

   public  String getChiefComplains(){return this.chiefComplains = chiefComplains;}

   public void setChiefComplains(String chiefComplains){ this.chiefComplains = chiefComplains;}


    public String getLabs() {
        return this.labs = labs ;
    }

    public void setLabs(String hospital) {
        this.labs = labs;
    }

    public String getDoctor() {
        return this.doctor = doctor ;
    }

    public void setDoctor(String doctor) {
        this.doctor = doctor;
    }

    public void setDrugs(String hospital) {
        this.drugs = drugs;
    }

    public String getDrugs() {
        return this.drugs = drugs ;
    }

    public void setDate(String date) {
        this.date = date;
    }

    public String getDate() {
        return date;
    }
}

我做了这个改变之后就行了

public class ClinicalHistory {
    String img;
    String date;
    String labs;
    String hospital;
    String chiefComplains;
    String doctor;
    String drugs;


    public ClinicalHistory() {
    }

    public String getImg() {
        return img;
    }

    public void setImg(String img) {
        this.img = img;
    }

    public String getHospital() {
        return this.hospital = hospital ;
    }

    public void setHospital(String hospital) {
        this.hospital = hospital;
    }

   public  String getChiefComplains(){return this.chiefComplains = chiefComplains;}

   public void setChiefComplains(String chiefComplains){ this.chiefComplains = chiefComplains;}


    public String getLabs() {
        return this.labs = labs ;
    }

    public void setLabs(String labs) {
        this.labs = labs;
    }

    public String getDoctor() {
        return this.doctor = doctor ;
    }

    public void setDoctor(String doctor) {
        this.doctor = doctor;
    }

    public void setDrugs(String drugs) {
        this.drugs = drugs;
    }

    public String getDrugs() {
        return this.drugs = drugs ;
    }

    public void setDate(String date) {
        this.date = date;
    }

    public String getDate() {
        return date;
    }
}