0 / 0 / 0
Регистрация: 08.05.2019
Сообщений: 1

PieChart используя данные взятые из бд Sqlite

08.05.2019, 11:30. Показов 550. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте!
В данный момент занимаюсь изучением android. Хочу построить круговую диаграмму используя данные из базы данных Sqlite(Имя товара"NAME" и его цена "COST", в базе уже есть записи, пока не могу понять как это осуществить. Получилось построить диаграмму, но на статичных данных, хотелось бы чтоб эти данные брались из базы. Подскажите пожалуйста.

Ниже показан код:

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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
package com.example.costoptimizer;
 
 
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.graphics.Color;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
 
import com.github.mikephil.charting.animation.Easing;
import com.github.mikephil.charting.charts.PieChart;
import com.github.mikephil.charting.components.Description;
import com.github.mikephil.charting.data.PieData;
import com.github.mikephil.charting.data.PieDataSet;
import com.github.mikephil.charting.data.PieEntry;
import com.github.mikephil.charting.utils.ColorTemplate;
 
import java.util.ArrayList;
 
 
/**
 * A simple {@link Fragment} subclass.
 */
public class ChartFragment extends Fragment {
    PieChart pieChart;
 
    public ChartFragment() {
        // Required empty public constructor
    }
 
 
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        View view = inflater.inflate(R.layout.fragment_chart, container, false);
 
 
        ContactDbHelper contactDbHelper = new ContactDbHelper(getActivity());
        SQLiteDatabase database = contactDbHelper.getReadableDatabase();
 
        Cursor cursor = contactDbHelper.readPurchase(database);
 
 
 
        pieChart = view.findViewById(R.id.piechart);
 
        pieChart.setUsePercentValues(true);
        pieChart.getDescription().setEnabled(false);
        pieChart.setExtraOffsets(5, 10, 5, 5);
 
        pieChart.setDragDecelerationFrictionCoef(0.95f);
 
        pieChart.setDrawHoleEnabled(true);
        pieChart.setHoleColor(Color.WHITE);
        pieChart.setTransparentCircleRadius(61f);
 
        ArrayList<PieEntry> yValues = new ArrayList<>();
 
        yValues.add(new PieEntry(10,"Хлеб"));
        yValues.add(new PieEntry(20,"Картошка"));
        yValues.add(new PieEntry(30,"Сахар"));
        yValues.add(new PieEntry(40,"Порошёк"));
        yValues.add(new PieEntry(50,"Кафе"));
        yValues.add(new PieEntry(60,"Одежда"));
 
        Description description = new Description();
        description.setText("Диаграмма затрат");
        description.setTextSize(9);
        pieChart.setDescription(description);
 
        pieChart.animateY(1500, Easing.EaseOutCubic);
 
        PieDataSet dataSet = new PieDataSet(yValues,"");
        dataSet.setSliceSpace(3f);
        dataSet.setSelectionShift(5f);
        dataSet.setColors(ColorTemplate.JOYFUL_COLORS);
 
        PieData data = new PieData((dataSet));
        data.setValueTextSize(10f);
        data.setValueTextColor(Color.YELLOW);
 
        pieChart.setData(data);
 
 
 
 
        return view;
    }
 
}
В этом коде, данные введены в ручную, мне нужно создать метод в базе данных который будет брать данные из бд и добавлять их в список

Ниже приведён код бд:
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
package com.example.costoptimizer;
 
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;
 
import java.util.Date;
 
public class ContactDbHelper extends SQLiteOpenHelper {
 
    public static final String DATABASE_NAME="Purchase_db";
    public static final int DATABASE_VERSION = 1;
 
    public static final String CREATE_TABLE = "create table "+ ContactContract.ContactEntry.TABLE_NAME+
            "("+ ContactContract.ContactEntry.PRODUCT_ID+" number,"+
            ContactContract.ContactEntry.NAME+" text,"+
            ContactContract.ContactEntry.QUANTITY+" text,"+
            ContactContract.ContactEntry.DATE+" date,"+
            ContactContract.ContactEntry.STORE+" text,"+
            ContactContract.ContactEntry.COST+" number);";
    public static final String DROP_TABLE = "drop table if exists "+ ContactContract.ContactEntry.TABLE_NAME;
 
    public ContactDbHelper(Context context)
    {
        super(context,DATABASE_NAME,null,DATABASE_VERSION);
        //Log.d("Database Operations","Database created...");
    }
 
    @Override
    public void onCreate(SQLiteDatabase sqLiteDatabase) {
 
        sqLiteDatabase.execSQL(CREATE_TABLE);
        Log.d("Database Operations","Table created...");
    }
 
    @Override
    public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {
        sqLiteDatabase.execSQL(DROP_TABLE);
        onCreate(sqLiteDatabase);
    }
 
    public void addPurchase(int id, String name, String qantity, String date, String store, int cost, SQLiteDatabase database)
    {
        ContentValues contentValues = new ContentValues();
        contentValues.put(ContactContract.ContactEntry.PRODUCT_ID,id);
        contentValues.put(ContactContract.ContactEntry.NAME,name);
        contentValues.put(ContactContract.ContactEntry.QUANTITY,qantity);
        contentValues.put(ContactContract.ContactEntry.DATE,date);
        contentValues.put(ContactContract.ContactEntry.STORE,store);
        contentValues.put(ContactContract.ContactEntry.COST,cost);
 
        database.insert(ContactContract.ContactEntry.TABLE_NAME,null,contentValues);
        Log.d("Database Operations","One Raw inserted...");
    }
 
    public Cursor readPurchase(SQLiteDatabase database)
    {
        String[] projections = {ContactContract.ContactEntry.PRODUCT_ID,
                ContactContract.ContactEntry.NAME,
                ContactContract.ContactEntry.QUANTITY,
                ContactContract.ContactEntry.DATE,
                ContactContract.ContactEntry.STORE,
                ContactContract.ContactEntry.COST};
 
        Cursor cursor = database.query(ContactContract.ContactEntry.TABLE_NAME,
                projections, null, null, null, null, null);
 
        return cursor;
    }
 
    public void updateContact(int id, String name, int quantity, String date, String store, int cost,SQLiteDatabase database)
    {
        ContentValues contentValues = new ContentValues();
        contentValues.put(ContactContract.ContactEntry.NAME,name);
        contentValues.put(ContactContract.ContactEntry.QUANTITY,quantity);
        contentValues.put(ContactContract.ContactEntry.DATE,date);
        contentValues.put(ContactContract.ContactEntry.STORE,store);
        contentValues.put(ContactContract.ContactEntry.COST,cost);
 
        String selecetion = ContactContract.ContactEntry.PRODUCT_ID+ " = "+id;
 
        database.update(ContactContract.ContactEntry.TABLE_NAME,contentValues,selecetion,null);
 
    }
 
    public void deleteContact(int id,SQLiteDatabase database)
    {
 
        String selection = ContactContract.ContactEntry.PRODUCT_ID+" = "+id;
        database.delete(ContactContract.ContactEntry.TABLE_NAME,selection,null);
 
    }
 
}
Ниже приведён класс с переменными:

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
package com.example.costoptimizer;
 
public class ContactContract
{
    private ContactContract(){}
 
    public static class ContactEntry
    {
        public static final String TABLE_NAME = "contact_info";
        public static final String PRODUCT_ID = "product_id";
        public static final String NAME = "name";
        public static final String QUANTITY = "quantity";
        public static final String DATE = "date";
        public static final String STORE = "store";
        public static final String COST = "cost";
    }
}
Пожалуйста помогите реализовать...
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
08.05.2019, 11:30
Ответы с готовыми решениями:

Найти страховой платеж используя числа взятые из текстового файла
Есть файл 1.txt в котором записаны числа в столбик, мне нужно их считать и подставить в формулу a*b/100. Ответ вывести на экран.

SQLite for Excel или как выгрузить данные в SQLite
Здравствуйте! Мне необходимо написать макрос для выгрузки данных из excel в sqlite. Нашла проект SQLite for Excel, но при запуске...

Как подставить в значение переменной, данные взятые из таблицы mysql
Здравствуйте. (C# VS2013)Есть такая задача, запускать exe фаил с параметрами, один из которых должен быть переменной, значение которой...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
08.05.2019, 11:30
Помогаю со студенческими работами здесь

SQLite вывезка данные и выложить извлеченные данные к MessageUI
Всем привет господа. У меня есть проблемка что не смог сделат, может кто нибудь поможет. вот код #import...

MPAndroidChart PieChart
Доброго времени суток! Сделал активность с возможностью выбора даты и диаграммой PieChart, в ней восемь категорий с разными значениями....

Создание sqlite используя EF6
Как правильно создать sqlite бд с помощью ef6? То есть создание самой бд и таблиц с помощью entity

Создать PieChart с помощью ZedGraph
Здравствуйте! Мне нужно отобразить Pie Chart на форме с помощью ZedGraph, который будет отображать две переменные. Кто знает как это...

Используя запросы, необходимо обновить данные в таблице используя DBLookupComboBox
Здравствуйте. Есть проекте(прикреплен к топику), в нем присутствует форма, которая редактирует текущую БД, для удобства используется...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

Новые блоги и статьи
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2. Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом. В. . .
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определённом условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru