从 SQLite 数据库检索的数据未在 Android 中绘制但未显示错误(使用 GraphView 作为库)

Data retrieved from SQLite database doesn't get plot in Android but doesn't show error (using GraphView as Library)

我是编程新手。我正在开发一个 android 应用程序,我必须在其中使用 SQLite 数据库绘制图形。我用于 Graph 的 table 之一是 Table_order,它具有 item_id、item_name、table_number 和 order_date 作为 columns.But 它没有得到我正在使用的 GraphView 的绘图。下面的代码是 GraphView 的 java class。

public class MomoGraph extends AppCompatActivity {
  GraphView momoGraphView;
  LineGraphSeries < DataPoint > series;
  DatabaseHelper myDBHelper;
  SQLiteDatabase mDatabase;
  TableOrderDBAdapter mOrderDBHelper;

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

    momoGraphView = (GraphView) findViewById(R.id.graphViewMomo);

    myDBHelper = new DatabaseHelper(this);
    mOrderDBHelper = new TableOrderDBAdapter(this);

    series = new LineGraphSeries < > (getDataPoint());
    momoGraphView.addSeries(series);
    series.resetData(getDataPoint());

  }

  private DataPoint[] getDataPoint() {
    myDBHelper.getWritableDatabase();
    int n = mOrderDBHelper.getX_axis().size();
    DataPoint[] values = new DataPoint[n];

    for (int i = 0; i < n; i++) {
      DataPoint v = new DataPoint(Double.parseDouble(mOrderDBHelper.getX_axis().get(i)), Double.parseDouble(mOrderDBHelper.getY_axis().get(i)));
      values[i] = v;
    }
    return values;
  }

下面的代码是 Xml 文件:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MomoGraph">
    
    <com.jjoe64.graphview.GraphView
        android:id="@+id/graphViewMomo"
        android:layout_width="379dp"
        android:layout_height="520dp"
        android:layout_alignParentStart="true"
        android:layout_alignParentTop="true"
        android:layout_alignParentLeft="true" />
</RelativeLayout>

Table 适配器 class 的代码,我将数据库中的值存储到数组列表中。

public  ArrayList<String> getX_axis(){
        ArrayList<String> Xval = new ArrayList<String>();
        open();
        mDatabase = mDBHelper.getReadableDatabase();
        Cursor x_cursor = mDatabase.rawQuery("SELECT ORDER_DATE FROM TABLE_ORDER WHERE ITEM_ID =? GROUP BY ORDER_DATE",new String[]{"'198'"});
        try{
            if(x_cursor!= null){
                if(x_cursor.moveToFirst()){
                    do {                            
                        String levelData = x_cursor.getString(x_cursor.getColumnIndexOrThrow("ORDER_DATE"));
                         Xval.add("" + levelData);
                    }
                    while (x_cursor.moveToNext());
                }
            }
        }
        catch (SQLException e){
            Log.e("Retrieve data","Unable to get Data"+ e);
        }
        x_cursor.close();
        close();
        return Xval;
    }
    public  ArrayList<String> getY_axis(){
        open();
        mDBHelper.getReadableDatabase();
        ArrayList<String> Yval = new ArrayList<String>();
        Cursor y_cursor = mDatabase.rawQuery("SELECT COUNT(ITEM_ID) FROM TABLE_ORDER WHERE ITEM_ID =? GROUP BY ORDER_DATE",new String[]{"'198'"});
        try{
            if(y_cursor!= null){
                if(y_cursor.moveToFirst()){
                    do {
                        String levelData = y_cursor.getString(y_cursor.getColumnIndexOrThrow("ITEM_ID"));

                        Yval.add(""+levelData);
                    }
                    while (y_cursor.moveToNext());
                }
            }
        }
        catch (SQLException e){
            Log.e("Retrieve data","Unable to get Data"+ e);
        }
        y_cursor.close();
        close();
        return Yval;
    }

}
我在 graphview class 中调用了方法 getX_axis 和 getY_axis。 我不明白为什么没有绘制这些值。 我浏览了 google 中的许多帖子,但无法解决。请帮忙!

series = new LineGraphSeries < > (getDataPoint());
momoGraphView.addSeries(series);
series.resetData(getDataPoint()); //once remove this

private DataPoint[] getDataPoint() {
    myDBHelper.getWritableDatabase();
    ArrayList<String> Xval = mOrderDBHelper.getX_axis();
    ArrayList<String> Yval = mOrderDBHelper.getY_axis();

    if (Xval==null || Xval.size()==0)
      return new DataPoint[0];

    DataPoint[] values = new DataPoint[Xval.size()];

    for (int i = 0; i < Xval.size(); i++) {
      values[i] = new DataPoint(Double.parseDouble(Xval.get(i)), Double.parseDouble(Yval.get(i)));
    }
    return values;
}

尝试此代码一次。