Android:在GraphView中呈现Sqlite数据库数据

时间:2017-03-26 12:05:59

标签: java android sqlite graph

我想以图形方式显示输入数据库的结果, 每当我运行程序并输入x和y值时,它们根本就没有正确绘制,而且图形本质上没有任何意义。

最终我计划将这个非常基本的项目实施到另一个正在开发的大项目中,我只想让这个项目作为起点。

以下是我使用的代码:

公共类MainActivity扩展了AppCompatActivity {

GraphView graph;
Button button;
EditText xInput, yInput;
SQLiteDatabase sqLiteDatabase;
MyHelper myHelper;
LineGraphSeries<DataPoint> series;

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

    button=(Button) findViewById(R.id.button);
    xInput= (EditText) findViewById(R.id.editX);
    yInput = (EditText) findViewById(R.id.editY);
    graph = (GraphView) findViewById(R.id.graph);

    myHelper =new MyHelper(this);
    sqLiteDatabase = myHelper.getWritableDatabase();

    exqButton();
}

private void exqButton() {
    button.setOnClickListener(new View.OnClickListener(){

        @Override
        public void onClick(View v) {
            int xVal = Integer.parseInt(String.valueOf(yInput.getText()));
            int yVal = Integer.parseInt(String.valueOf(xInput.getText()));

            myHelper.insertData(xVal,yVal);
            series = new LineGraphSeries<DataPoint>(getData());
            graph.addSeries((series));
        }
    });


}

private DataPoint[] getData() {

    //read data from db

    String[] columns = {"xValues", "yValues"};
    Cursor cursor = sqLiteDatabase.query("MyTable", columns, null, null, null,null,null,null);
    DataPoint[] dp = new DataPoint[cursor.getCount()];
    for(int i = 0;i<cursor.getCount(); i++){
        cursor.moveToNext();
        dp[i]=new DataPoint(cursor.getInt(0), cursor.getInt(1));

    }

    return dp;
}

这是数据库类:

public class MyHelper extends SQLiteOpenHelper {
private Context con;
public MyHelper(Context context) {
    super(context, "MyDatabase",null,1);
    con = context;
}

@Override
public void onCreate(SQLiteDatabase db) {

    String createTable="create table MyTable (xValues INTEGER, yValues INTEGER);";
    db.execSQL(createTable);
    Toast.makeText(con,"Table created",Toast.LENGTH_LONG).show();

}

@Override
public void onUpgrade(SQLiteDatabase sqLiteDatabase, int oldVersion, int newVersion) {

}

public void insertData(int x, int y){

    SQLiteDatabase db = this.getWritableDatabase();

    ContentValues contentValues= new ContentValues();

    contentValues.put("xValues", x);

    contentValues.put("yValues", y);

    db.insert("MyTable",null,contentValues);
    Toast.makeText(con, "data inserted", Toast.LENGTH_LONG).show();

}

最后布局:

<com.jjoe64.graphview.GraphView
    android:layout_width="match_parent"
    android:layout_height="300dp"
    android:id="@+id/graph"
    android:layout_alignParentBottom="true"
    android:layout_alignParentStart="true" />

<EditText
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:hint="x"
    android:id="@+id/editX"/>

<Button
    android:text="Plot"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/editText"
    android:layout_alignParentEnd="true"
    android:layout_marginEnd="54dp"
    android:id="@+id/button" />

<EditText
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:hint="y"
    android:layout_below="@+id/button"
    android:layout_toEndOf="@+id/editText3"
    android:id="@+id/editY"/>

我相对较新,所以如果它显而易见,我不会感到惊讶,任何帮助都表示赞赏,谢谢!

2 个答案:

答案 0 :(得分:0)

很难从你所说的内容中猜出问题。

  

他们根本没有正确绘图,图表毫无意义   基本上

如果我是你,我会做这些步骤。 1.是否正确创建了数据库和表。 2.表插件工作正常与否。 3.查询返回正确值的x,y值不是。 4.在绘制图形之前打印值。 5.然后最后检查 - 您是否已经实现了图形API。

编程的关键之一是调试 使用logger或system.out.println语句来解决Android中的任何问题。

祝你好运。

答案 1 :(得分:0)

这部影片与您的问题非常相似。可能有助于检查出来。 https://www.youtube.com/watch?v=EYRZZPKgR60