Форум программистов, компьютерный форум, киберфорум
Программирование Android
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 08.05.2019
Сообщений: 1

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

08.05.2019, 11:30. Показов 530. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru