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

Не работает SimpleCursorAdapter

06.01.2020, 20:14. Показов 835. Ответов 0

Студворк — интернет-сервис помощи студентам
У меня есть БД с предметами
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
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
 
//Работа с БД
public class DatabaseHelper {
    private static final String DATABASE_NAME = "Journal.db"; // название бд
    private static final int VER = 1; // версия базы данных
    private static final String DATABASE_TABLE = "subject"; //название таблицы
 
    public static final String COLUMN_ID = "_id";
    public static final String COLUMN_SUB = "SUB";
 
    protected static final String DB_CREATE =
    "create table " + DATABASE_TABLE + "("
                    + COLUMN_ID + " primary key autoincrement,"
                    + COLUMN_SUB + "text" + ");";
 
    private final Context ctx;
    private DatabaseHelp dbHelp;
    private SQLiteDatabase SQL;
 
    public DatabaseHelper(Context ctx) {
        this.ctx = ctx;
    }
 
    // открыть подключение
    public void open() {
        dbHelp = new DatabaseHelp(ctx, DATABASE_NAME, null, VER);
        SQL = dbHelp.getWritableDatabase();
    }
 
    // закрыть подключение
    public void close() {
        if (dbHelp != null) dbHelp.close();
    }
 
    //получить все данные из DATABASE_TABLE
    public Cursor getAllData() {
        return SQL.query(DATABASE_TABLE, null, null, null, null, null, null);
    }
 
    //добавить запись
    public void addRec(String sub) {
        ContentValues cv = new ContentValues();
        cv.put(COLUMN_SUB, sub);
        SQL.insert(DATABASE_TABLE, null, cv);
    }
 
    //удалить запись
    public void delRec(long id) {
        SQL.delete(DATABASE_TABLE, COLUMN_ID + " = " + id, null);
    }
 
 
    //Создание и управление БД
    private class DatabaseHelp extends SQLiteOpenHelper {
        public DatabaseHelp(Context ctx, String name, SQLiteDatabase.CursorFactory factory, int version) {
            super(ctx, name, factory, version);
        }
 
        //создание БД
        @Override
        public void onCreate(SQLiteDatabase db) {
            db.execSQL(DB_CREATE);
        }
 
        //обновление БД
        @Override
        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
            db.execSQL("DROP TABLE IF EXISTS " + "subject");
            onCreate(db);
        }
    }
}
и есть фрагмент который реализует SimpleCursorAdapter

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
import android.content.ContentValues;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.SimpleCursorAdapter;
import android.widget.TextView;
 
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentTransaction;
import androidx.loader.content.CursorLoader;
 
public class JournalSubjectAdd extends Fragment {
    final String LOG_TAG = "myLogs";
    Button add;
    Button edit;
    EditText nameSubject;
    ListView subjectView;
    SimpleCursorAdapter cursorAdapter;
 
    DatabaseHelper databaseHelper;
    SQLiteDatabase database;
    Cursor cursor;
    ContentValues cv;
 
    @Override
    public View onCreateView(LayoutInflater inflater, final ViewGroup container, Bundle savedInstanceState) {
        final View view = inflater.inflate(R.layout.journal_subject_add, container, false);
 
        add = (Button)view.findViewById(R.id.subjectAdd);
        edit = (Button)view.findViewById(R.id.subjectEdit);
        nameSubject = (EditText)view.findViewById(R.id.nameSubject);
        subjectView = (ListView)view.findViewById(R.id.subjectView);
 
        //открываем подключение
        databaseHelper = new DatabaseHelper(getActivity());
        databaseHelper.open();
        //запуск курсора
        cursor = databaseHelper.getAllData();
 
        String[] subString = new String[] {databaseHelper.COLUMN_SUB};
        int[] to = new int[] {android.R.id.text1};
        // создааем адаптер и настраиваем список
        cursorAdapter = new SimpleCursorAdapter(getActivity(), android.R.layout.simple_list_item_1, cursor, subString, to, 0);
        subjectView.setAdapter(cursorAdapter);
 
        return view;
    }
}
При запуске данного фрагмента, приложение вылетает вот так:

При том, что у меня есть колонка _id.
Что происходит не так?
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
java.lang.IllegalArgumentException: column '_id' does not exist
        at android.database.AbstractCursor.getColumnIndexOrThrow(AbstractCursor.java:333)
        at android.widget.CursorAdapter.init(CursorAdapter.java:180)
        at android.widget.CursorAdapter.<init>(CursorAdapter.java:157)
        at android.widget.ResourceCursorAdapter.<init>(ResourceCursorAdapter.java:96)
        at android.widget.SimpleCursorAdapter.<init>(SimpleCursorAdapter.java:104)
        at com.arseniy.schoolhelper.JournalSubjectAdd.onCreateView(JournalSubjectAdd.java:53)
        at androidx.fragment.app.Fragment.performCreateView(Fragment.java:2612)
        at androidx.fragment.app.FragmentManagerImpl.moveToState(FragmentManagerImpl.java:874)
        at androidx.fragment.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManagerImpl.java:1228)
        at androidx.fragment.app.FragmentManagerImpl.moveToState(FragmentManagerImpl.java:1293)
        at androidx.fragment.app.BackStackRecord.executeOps(BackStackRecord.java:439)
        at androidx.fragment.app.FragmentManagerImpl.executeOps(FragmentManagerImpl.java:2066)
        at androidx.fragment.app.FragmentManagerImpl.executeOpsTogether(FragmentManagerImpl.java:1856)
        at androidx.fragment.app.FragmentManagerImpl.removeRedundantOperationsAndExecute(FragmentManagerImpl.java:1811)
        at androidx.fragment.app.FragmentManagerImpl.execPendingActions(FragmentManagerImpl.java:1717)
        at androidx.fragment.app.FragmentManagerImpl$2.run(FragmentManagerImpl.java:150)
        at android.os.Handler.handleCallback(Handler.java:751)
        at android.os.Handler.dispatchMessage(Handler.java:95)
        at android.os.Looper.loop(Looper.java:154)
        at android.app.ActivityThread.main(ActivityThread.java:6077)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:866)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:756)
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
06.01.2020, 20:14
Ответы с готовыми решениями:

SimpleCursorAdapter
Почему то ругаетсяв строке new SimpleCursorAdapter()... Что не так делаю? Cursor cursor = db.query(&quot;PEOPLE&quot;, new String...

Получение данных с SimpleCursorAdapter
Скопировал себе в приложение пример из библиотеки шерлок, с табами. оно работает хорошо, но мне нужно переделать ее под свои нужды. И во...

SimpleCursorAdapter не хочет работать
Добрый день. Вобщем такая ситация. Нажимаю на MainActivity кнопку и по интенту грузится вторая актвити ее код: public class...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
06.01.2020, 20:14
Помогаю со студенческими работами здесь

Фильтрация в кастомном SimpleCursorAdapter
Здравствуйте. вот Активити public class MainActivity extends AppCompatActivity { SQLiteDatabase database; ...

Прикрутить RadioGroup к ListView(SimpleCursorAdapter)
Не могу понять как реализовать одиночный выбор из списка: Сейчас выводит список компаний, где я могу сделать множественный выбор, а мне...

Каков новый аналог устаревшего SimpleCursorAdapter?
SimpleCursorAdapter устарел уже(deprecated) что лучше использовать вместо него какой есть более новый аналог?? Добавлено через 2...

Вывод из базы данных в ListView через SimpleCursorAdapter
Доброе время суток. Пишу программу под Андроид в среде Android Studio и возникла проблема с выводом данных в listview через...

ViewPager, Fragment и SimpleCursorAdapter, обновить соседнюю страницу
Есть активити с ViewPager, в который подгружается фрагмент, состоящий из ListView. ListView (с TextView и CheckBox) заполняется из БД...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru