Форум программистов, компьютерный форум CyberForum.ru

Graphic View и база данных - Android

Войти
Регистрация
Восстановить пароль
 
Retper
 Аватар для Retper
0 / 0 / 0
Регистрация: 28.10.2013
Сообщений: 40
13.06.2015, 19:28     Graphic View и база данных #1
Доброго времени суток!
Столкнулся с проблемой, что не могу понять, как же мне построить график на основе данных из моей базы данных с помощью Graphic View.
Собственно, что надо сделать. У меня есть база данных:
Java
1
2
3
4
5
6
7
8
private static final String DATABASE_NAME = "mileage.db";
    private static final int DATABASE_VERSION = 1;
    public static final String TABLE_NAME = "mileage";
    public static final String UID = "_id";
    public final static String DATE = "date";
    public final static String DISTANCE = "kms";
    public final static String LITRES = "litres";
    public final static String WASTE = "waste";
Мне надо построить график, в котором по X будет идти UID, а по Y LITRES.
На сайте автора Graphic View написано, что создать график можно вот так:
Java
1
2
3
4
5
6
7
8
GraphView graph = (GraphView) findViewById(R.id.graph);
LineGraphSeries<DataPoint> series = new LineGraphSeries<DataPoint>(new DataPoint[] {
          new DataPoint(0, 1),
          new DataPoint(1, 5),
          new DataPoint(2, 3),
          new DataPoint(3, 2),
          new DataPoint(4, 6)
});
Но запустить курсор, и чтобы он в цикле загонял данные в DataPoint'ы, не получается. Подскажите, как же мне достичь своей цели?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.06.2015, 19:28     Graphic View и база данных
Посмотрите здесь:

Андроид и база данных Android
Android база данных
Не создается база данных Android
База данных! Android
База данных! Android
База данных Android
Android База данных sqlite
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Spelcrawler
521 / 491 / 110
Регистрация: 12.03.2014
Сообщений: 1,641
Завершенные тесты: 1
14.06.2015, 11:13     Graphic View и база данных #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от Retper Посмотреть сообщение
Но запустить курсор, и чтобы он в цикле загонял данные в DataPoint'ы, не получается
Почему?
Java
1
2
3
4
5
6
DataPoint[] points = new DataPoint[cursor.getCount];
for(int i = 0; i < cursor.getCount(); i++){
    cursor.moveToNext();
    points[i] = ....
}
LineGraphSeries<DataPoint> series = new LineGraphSeries<DataPoint>(points);
Retper
 Аватар для Retper
0 / 0 / 0
Регистрация: 28.10.2013
Сообщений: 40
14.06.2015, 11:30  [ТС]     Graphic View и база данных #3
Цитата Сообщение от Spelcrawler Посмотреть сообщение
Почему?
Во-первых, спасибо за ответ!
А, во-вторых, к сути. Программа ругается, что мол курсор ссылается на нулевой элемент.
Attempt to invoke virtual method 'android.database.Cursor android.database.sqlite.SQLiteDatabase.query(java.lang.String, java.lang.String[], java.lang.String, java.lang.String[], java.lang.String, java.lang.String, java.lang.String)' on a null object reference
at com.example.bram.db.Graph.onCreate
Я столкнулся уже с этой проблемой ранее и так не нашел ей решения. Почему-то, когда я хочу вывести мою БД с помощью курсора при самом запуске программы (ну то есть в onCreate), программа выдает такую ошибку. Хотя БД не пустая. Если же сразу при старте программы нажать кнопку для вывода БД с таким же кодом, то вывод произойдет без ошибок. Вот и здесь то же самое.
Spelcrawler
521 / 491 / 110
Регистрация: 12.03.2014
Сообщений: 1,641
Завершенные тесты: 1
14.06.2015, 12:19     Graphic View и база данных #4
Retper, ну покажите код, так ничего не сказать.
Retper
 Аватар для Retper
0 / 0 / 0
Регистрация: 28.10.2013
Сообщений: 40
14.06.2015, 12:25  [ТС]     Graphic View и база данных #5
Цитата Сообщение от Spelcrawler Посмотреть сообщение
Retper, ну покажите код, так ничего не сказать.
Извиняюсь, как-то упустил это.
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
public class Graph extends Activity {
    private DataBaseHelper myHelper;
    private SQLiteDatabase myDb;
 
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.graph);
        GraphView graph = (GraphView) findViewById(R.id.graph);
        Cursor cursor = myDb.query(myHelper.TABLE_NAME, new String[]{
                myHelper.UID, myHelper.DATE, myHelper.DISTANCE, myHelper.LITRES, myHelper.WASTE }, null, null, null, null, null);
        DataPoint[] points = new DataPoint[cursor.getCount()];
        for(int i = 0; i < cursor.getCount(); i++){
            cursor.moveToNext();
            float id=cursor.getFloat(cursor.getColumnIndex(myHelper.UID));
            float litres=cursor.getFloat(cursor.getColumnIndex(myHelper.LITRES));
            points[i] = new DataPoint(id,litres);
        }
        LineGraphSeries<DataPoint> series = new LineGraphSeries<DataPoint>(points);
        graph.addSeries(series);
    }
}
И вот еще БД. Ну мало ли.
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
public class DataBaseHelper extends SQLiteOpenHelper implements BaseColumns{
 
    private static final String DATABASE_NAME = "mileage.db";
    private static final int DATABASE_VERSION = 1;
    public static final String TABLE_NAME = "mileage";
    public static final String UID = "_id";
    public final static String DATE = "date";
    public final static String DISTANCE = "kms";
    public final static String LITRES = "litres";
    public final static String WASTE = "waste";
 
    private static final String SQL_CREATE_ENTRIES = "CREATE TABLE "
            + TABLE_NAME + " (" + UID + " INTEGER PRIMARY KEY AUTOINCREMENT,"
            + DATE + " DATE, "
            + DISTANCE + " REAL, "
            + LITRES + " REAL, "
            + WASTE + " REAL);";
 
    private static final String SQL_DELETE_ENTRIES = "DROP TABLE IF EXISTS "
            + TABLE_NAME;
 
    public DataBaseHelper(Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
    }
 
    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL(SQL_CREATE_ENTRIES);
    }
 
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        db.execSQL(SQL_DELETE_ENTRIES);
        onCreate(db);
    }
}
Spelcrawler
521 / 491 / 110
Регистрация: 12.03.2014
Сообщений: 1,641
Завершенные тесты: 1
14.06.2015, 13:04     Graphic View и база данных #6
Цитата Сообщение от Retper Посмотреть сообщение
Cursor cursor = myDb.query(myHelper.TABLE_NAME, new String[]{
Вы сразу курсор инициализируете, когда myDB = null
Retper
 Аватар для Retper
0 / 0 / 0
Регистрация: 28.10.2013
Сообщений: 40
14.06.2015, 13:26  [ТС]     Graphic View и база данных #7
Цитата Сообщение от Spelcrawler Посмотреть сообщение
Вы сразу курсор инициализируете, когда myDB = null
Ну просто если вот этот же код вынести в кнопку. Которая будет запускаться сразу после старта Активити, то все работает. Можете посоветовать как сделать, чтобы это работало в onCreate?
Spelcrawler
521 / 491 / 110
Регистрация: 12.03.2014
Сообщений: 1,641
Завершенные тесты: 1
14.06.2015, 13:29     Graphic View и база данных #8
Цитата Сообщение от Retper Посмотреть сообщение
private DataBaseHelper myHelper;
* * private SQLiteDatabase myDb;
вот это инициализируйте а потом уже курсор.
Retper
 Аватар для Retper
0 / 0 / 0
Регистрация: 28.10.2013
Сообщений: 40
14.06.2015, 13:56  [ТС]     Graphic View и база данных #9
Цитата Сообщение от Spelcrawler Посмотреть сообщение
вот это инициализируйте а потом уже курсор.
Прошу прощения, но я не понимаю о чем в данном случае идет речь.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.06.2015, 14:02     Graphic View и база данных
Еще ссылки по теме:

Android База данных SQLite
Некорректное отображение приложения в Graphic Layout и на телефоне Android
База данных, изображения Android
Не создается база данных Android
Android База данных

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Spelcrawler
521 / 491 / 110
Регистрация: 12.03.2014
Сообщений: 1,641
Завершенные тесты: 1
14.06.2015, 14:02     Graphic View и база данных #10
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Java
1
2
3
4
myHelper = ....
myDB = ....
//И уже потом
cursor = ....
Yandex
Объявления
14.06.2015, 14:02     Graphic View и база данных
Ответ Создать тему
Опции темы

Текущее время: 21:20. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru