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

Связать базу данных с RecyclerView

16.06.2017, 20:22. Показов 3734. Ответов 20
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте уважаемые форумчане! Прошу вашей помощи!
У меня есть фрагмент с RecyclerView

Код:
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
package com.starikov.tester;
 
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
 
 
public class PizzaMaterialFragment extends Fragment {
 
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
 
        RecyclerView pizzaRecycler = (RecyclerView)inflater.inflate(R.layout.fragment_pizza_material, container, false);
 
        int[] pizzaImages = new int[Pizza.pizzas.length];
        for (int i = 0; i < pizzaImages.length; i++){
            pizzaImages[i] = Pizza.pizzas[i].getImageResourceId();
        }
 
        CaptionedImagesAdapter adapter = new CaptionedImagesAdapter(pizzaImages);
        pizzaRecycler.setAdapter(adapter);
        LinearLayoutManager layoutManager = new LinearLayoutManager(getActivity());
        pizzaRecycler.setLayoutManager(layoutManager);
        return pizzaRecycler;
    }
}
Разметка:
XML
1
2
3
4
5
6
7
<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.RecyclerView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/pizza_recycler"
    android:scrollbars="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"/>
Есть класс Pizza:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
package com.starikov.tester;
 
public class Pizza {
 
    private int imageResourceId;
 
    public static final Pizza[] pizzas = {
            new Pizza(R.drawable.formul_electricheskii_zaryad_ydra_atoma),
            new Pizza(R.drawable.formul_simvol_himicheskogo_elementa),
            new Pizza(R.drawable.formul_energia_svyzi_yadra),
            new Pizza(R.drawable.formul_massovoe_chislo),
            new Pizza(R.drawable.formul_defekt_mass)
    };
 
    private Pizza(int imageResourceId) {
        this.imageResourceId = imageResourceId;
    }
 
    public int getImageResourceId() {
        return imageResourceId;
    }
}
Есть CaptionedImagesAdapter:

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
package com.starikov.tester;
 
 
import android.graphics.drawable.Drawable;
import android.support.v7.widget.CardView;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.ViewGroup;
import android.widget.ImageView;
 
class CaptionedImagesAdapter extends RecyclerView.Adapter<CaptionedImagesAdapter.ViewHolder> {
 
    private int[] imageIds;
 
    public static class ViewHolder extends RecyclerView.ViewHolder{
        private CardView cardView;
        public ViewHolder(CardView v){
            super(v);
            cardView = v;
        }
    }
 
    public CaptionedImagesAdapter(int[] imageIds){
        this.imageIds = imageIds;
    }
 
    @Override
    public CaptionedImagesAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        CardView cv = (CardView) LayoutInflater.from(parent.getContext()).inflate(R.layout.card_view, parent, false);
        return new ViewHolder(cv);
    }
 
    @Override
    public void onBindViewHolder(ViewHolder holder, int position) {
        CardView cardView = holder.cardView;
        ImageView imageView = (ImageView) cardView.findViewById(R.id.info_image);
        Drawable drawable = cardView.getResources().getDrawable(imageIds[position]);
        imageView.setImageDrawable(drawable);
    }
 
    @Override
    public int getItemCount() {
        return imageIds.length;
    }
}
Мне нужно переделать так чтобы RecyclerView брал данные из базы данных а не из простого списка в Pizza.java. Я перерыл гугл, но не разобрался в том что было. Прошу вашей помощи!

Вот код базы данных:
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
package com.starikov.tester;
 
import android.content.ContentValues;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
 
public class PizzaDatabaseHelper extends SQLiteOpenHelper{
 
    private static final String DB_NAME = "pizza";
    private static final int DB_VERSION = 1;
 
    PizzaDatabaseHelper(Context context){
        super(context, DB_NAME, null, DB_VERSION);
    }
 
    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL("CREATE TABLE FORMULS ("
                + "_id INTEGER PRIMARY KEY AUTOINCREMENT, "
                + "IMAGE_RESOURCE_ID INTEGER);");
        insertFormul(db, R.drawable.formul_electricheskii_zaryad_ydra_atoma);
        insertFormul(db, R.drawable.formul_simvol_himicheskogo_elementa);
        insertFormul(db, R.drawable.formul_energia_svyzi_yadra);
        insertFormul(db, R.drawable.formul_massovoe_chislo);
        insertFormul(db, R.drawable.formul_defekt_mass);
    }
 
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldV, int newV) {
    }
 
    private static void insertFormul(SQLiteDatabase db, int resourceId){
        ContentValues formulValues = new ContentValues();
        formulValues.put("IMAGE_RESOURCE_ID", resourceId);
        db.insert("FORMULS", null, formulValues);
    }
}
Прошу помочь! Приведите полный код, с объяснением, я новичок и не очень сразу все понимаю!
Заранее благодарен!
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
16.06.2017, 20:22
Ответы с готовыми решениями:

Связать базу данных
Добрый вечер! Объясните пожалуйста новичку, как связать веб-сервер с андроид-приложением? (На сервере я управляю базой данных, содержимое...

Доделать базу данных и связать схему данных
Нужно доделать базу данных (сделать главную и как то украсить) и связать схему данных нужна ваша помощь, проверьте правильность базы и что...

Связать базу данных с Дельфи
Есть БД акцес. надо связать с делфи. Я новичок в этом деле, желательно всё подробно, чтобы я понял)

20
4 / 4 / 4
Регистрация: 07.02.2008
Сообщений: 361
19.06.2017, 15:53
Если я правильно понял надо использовать SimpleCursorAdapter. Ему в конструкторе передаешь обьект Сursor, который перемещается по БД в соответсвии с запросами.
0
314 / 257 / 81
Регистрация: 31.10.2016
Сообщений: 619
19.06.2017, 17:46
Mr Endless, а вы уверены, что вам нужна база данных? Может просто можно обойтись статическим списком в json?

Добавлено через 2 минуты
Если у вас нет сложных выборок, фильтрации из 200000 элементов, джоинов таблиц по полям, сортировки, то вам и БД незачем.
0
1 / 1 / 0
Регистрация: 11.05.2017
Сообщений: 31
21.06.2017, 09:16  [ТС]
Мне нужно будет потом возможность добавлять картинку в избранное, а также поиск по данным из курсора, для этого json подойдет?
0
314 / 257 / 81
Регистрация: 31.10.2016
Сообщений: 619
21.06.2017, 14:50
Что именно подразумевается под "добавлять картинку в избранное"? Если ее нужно сохранить, то сохраните ее в файловую систему в своем приложении. Если сохранить урл, название, юзера - то вполне можно json.
Я недавно имел дело с 10мб файлом с городами, которых более 200к. Вычитывание файла и его парсинг занял на Gson 1 сек, если LoganSquare - 0,6. Я не думаю, что у вас будет больше чем это. Все это можно хранить в памяти в виде json строки. И парсить ее в объекты когда надо (объекты в памяти больше места занимают, чем просто json строка).
0
1570 / 1168 / 426
Регистрация: 08.05.2012
Сообщений: 5,219
21.06.2017, 15:01
Как вариант, SharedPref отлично подходит, как миниБД. Я как-то разместил там адреску Москвы, ни о каких задержках и парсинге речи не было. Порядок кол-ва записей примерно такой же. Может это и не по феншую, но очень удобно, а главное быстро.
0
1 / 1 / 0
Регистрация: 11.05.2017
Сообщений: 31
26.06.2017, 06:41  [ТС]
Спасибо за советы! Буду пробовать
0
1 / 1 / 0
Регистрация: 11.05.2017
Сообщений: 31
03.07.2017, 20:33  [ТС]
Я хочу чтобы показывался список формул, с помощью recyclerview и cardview в фрагменте, возможность добавления формулы в избранное (как то отмечать это чтобы потом в отдельном фрагменте показывать избранные формулы) а также поиск по списку этих формул с помощью searchView.
Подскажите что лучше всего для этого использовать JSON, SQLite, SharedPreference?
Всего формул около 300.
И еще не сложно скиньте пример или урок как это делается(не обязательно)
Спасибо за ответы!
0
1570 / 1168 / 426
Регистрация: 08.05.2012
Сообщений: 5,219
04.07.2017, 11:23
Использовать бд для пары записей не целесообразно.
0
2884 / 2296 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
04.07.2017, 11:29
Цитата Сообщение от Mr Endless Посмотреть сообщение
Подскажите что лучше всего для этого использовать JSON, SQLite, SharedPreference
читать разучился?
тебе человек двумя сообщениями выше написал, что можно использовать SharedPreference
0
1 / 1 / 0
Регистрация: 11.05.2017
Сообщений: 31
04.07.2017, 11:59  [ТС]
Если я в настройках нажму стереть данные, то что я делал в sharedPreferences сотрется?
0
1 / 1 / 0
Регистрация: 11.05.2017
Сообщений: 31
04.07.2017, 12:00  [ТС]
Тогда JSON лучше использовать или sharedPreferences? В чем проще сделать?
0
2884 / 2296 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
04.07.2017, 12:03
проверить самому не?
0
1 / 1 / 0
Регистрация: 11.05.2017
Сообщений: 31
04.07.2017, 12:43  [ТС]
проверил, стирается!
0
1570 / 1168 / 426
Регистрация: 08.05.2012
Сообщений: 5,219
04.07.2017, 13:13
Ну стирается и дальше что? Работать больше нельзя, мобилу на помойку?
0
1 / 1 / 0
Регистрация: 11.05.2017
Сообщений: 31
04.07.2017, 13:22  [ТС]
для хранения контента не подходит значит, пользователь сотрет данные, и контент не запустится
0
2884 / 2296 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
04.07.2017, 13:27
а тебе не приходило в голову, что если пользователь нажимает СТЕРЕТЬ данные то он хочет СТЕРЕТЬ данные?
0
1 / 1 / 0
Регистрация: 11.05.2017
Сообщений: 31
04.07.2017, 13:30  [ТС]
Ну может он хочет стереть изменения, а не стереть работоспособность программы(при запуске никакой информации, белый экран и toolbar), для второго обычно удаляют приложения
0
1570 / 1168 / 426
Регистрация: 08.05.2012
Сообщений: 5,219
04.07.2017, 14:13
Когда он нажимает стереть, в нормальных приложениях будет видимость первого запуска, как после установки, а не белого экрана и вылетов.
0
1 / 1 / 0
Регистрация: 11.05.2017
Сообщений: 31
05.07.2017, 18:39  [ТС]
Ну и что, МНЕ не подходит, значит не подходит
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
05.07.2017, 18:39
Помогаю со студенческими работами здесь

Пытаюсь связать dblookupcombobox и базу данных
Пытаюсь связать dblookupcombobox и базу данных. При выставлении свойств ошибок не выдает. При запуске программы высвечивается только 1...

Связать базу данных с уже готовой программой
Добрый день, помогите мне в уже готовой программе создать базу данных о работе камер...В таблице должно быть 4 поля с информацией о камерах...

Связать базу данных Access через ADODC
Всем привет! Я тут в первый раз! у меня проблема в VisualBasic не могу связать базу данных Access через ADODC?

Связать базу данных (потомок, родители) с глобальной переменной
Связать базу данных (потомок, родители) с глобальной переменной FAMILY: (setf family ’((colin nil nil) (deirdre nil nil) (arthur nil...

Связать базу данных (потомок, родители) с глобальной переменной
Связать базу данных (потомок, родители) с глобальной переменной FAMILY: (setf family ’((colin nil nil) (deirdre nil nil) (arthur...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru