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

Заполнение ListView из БД

05.07.2012, 13:46. Показов 9851. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть одна активити, в ней 2 текстовых поля и кнопка, отправляющая содержимое этих полей как строку в БД.
Есть другая активити, которая должна в listView отображать содержимое БД построчно, однако выбивает NullPointerException. Уже голову сломал, почему не работает, помогите разобраться пожалуйста.

Первая активити:
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
import java.io.BufferedReader;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.util.List;
 
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;
 
public class quickadd extends Activity 
{
    private DataHelper dh; //класс для работы с БД
    public  EditText editText1;//amount
    public  EditText editText2; //note
    @Override
    protected void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.quickadd);
        editText1 = (EditText) findViewById(R.id.editText1);
        editText2 = (EditText) findViewById(R.id.editText2);
    }
   
    public void btnAdd_Click(View v)
    {
        switch (v.getId()) 
            {
                case R.id.btnAdd:
                    try{
                    dh = getDataHelper();
                    dh.insert(editText1.getText().toString() + " ; " + editText2.getText().toString());
                    Toast.makeText(getApplicationContext(), 
                            "Recorded successfully", Toast.LENGTH_LONG).show();
                    }
                    catch(Throwable t)
                    {
                        Toast.makeText(getApplicationContext(), 
                        "Exception: " + t.toString(), Toast.LENGTH_LONG).show();
                    }
                break;      
            }   
    }
    public DataHelper getDataHelper() {
        return new DataHelper(this);
    }
}
Вторая, проблемная активити:
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
import java.util.List;
 
import android.app.Activity;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
 
public class mydebts extends Activity 
{
    private DataHelper dh;
    @Override
    protected void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.mydebts);
        try {
        List<String> list= dh.selectAll(); //забиваю данные из БД в лист
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,   R.layout.list_item, list); //прикручиваю адаптер
        ListView lv = (ListView)findViewById(R.id.listView1);
        lv.setAdapter(adapter);
        }
        catch(Throwable t) {  //и тут фейл: NullPointerException
            Toast.makeText(getApplicationContext(), 
                    "Exception: " + t.toString(), Toast.LENGTH_LONG).show();
        }
        
    }
    
    
    public DataHelper getDataHelper() {
        return new DataHelper(this);
    }
}

Класс для работы с БД:
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 java.util.ArrayList;
import java.util.List;
 
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.database.sqlite.SQLiteStatement;
 
public class DataHelper {
    // Имя базы данных
    private static final String DATABASE_NAME = "mydatabase.db";
    private static final String TABLE_NAME = "notes";
    private static final int DATABASE_VERSION = 1;
 
    private Context context;
    private SQLiteDatabase db;
 
    private static final String INSERT = "insert into " + TABLE_NAME
            + "(name) values(?)";
    private SQLiteStatement insertStmt;
 
    public DataHelper(Context context) {
        this.context = context;
        OpenHelper openHelper = new OpenHelper(this.context);
        this.db = openHelper.getWritableDatabase();
        this.insertStmt = this.db.compileStatement(INSERT);
    }
 
    // Операции при вставке записи
    public long insert(String name) {
        this.insertStmt.bindString(1, name);
        return this.insertStmt.executeInsert();
    }
 
    // Удаляем все записи в таблице
    public void deleteAll() {
        this.db.delete(TABLE_NAME, null, null);
    }
 
    public List<String> selectAll() {
        List<String> list = new ArrayList<String>();
        Cursor cursor = this.db.query(TABLE_NAME, new String[] { "name" },
                null, null, null, null, "name desc");
 
        if (cursor.moveToFirst()) {
            do {
                list.add(cursor.getString(0));
 
            } while (cursor.moveToNext());
        }
        if (cursor != null && !cursor.isClosed()) {
            cursor.close();
        }
        return list;
    }
 
    private static class OpenHelper extends SQLiteOpenHelper {
        public OpenHelper(Context context) {
            super(context, DATABASE_NAME, null, DATABASE_VERSION);
        }
 
        @Override
        public void onCreate(SQLiteDatabase db) {
            // Запрос создания таблицы
            db.execSQL("CREATE TABLE " + TABLE_NAME
                    + "(id INTEGER PRIMARY KEY, name TEXT)");
        }
 
        @Override
        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
            // запрос удаления таблицы
            db.execSQL("DROP TABLE IF EXIST " + TABLE_NAME);
            onCreate(db);
        }
    }
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
05.07.2012, 13:46
Ответы с готовыми решениями:

Заполнение ListView в AsyncTask
Нужно заполнить ListView картинками, которые скачиваются в AsyncTask с помощью Picasso. Картинки скачиваются нормально, ArrayList и...

Заполнение ListView из HashMap
Добрый день. Столкнулся с некоторой проблемой при наполнении ListView с помощью HashMap. Проблема вот в чем, заполняю HashMap с помощью...

Некорректное заполнение ListView
Есть 2 фрагмента, в первом лист заполняемый с помощью TypedArray. Когда я перехожу по позиции листа и возвращаюсь назад, то лист...

2
Android Programmer
141 / 142 / 10
Регистрация: 08.12.2010
Сообщений: 421
05.07.2012, 16:02
Java
1
List<String> list= dh.selectAll(); //забиваю данные из БД в лист
у вас в этот момент dh = null
для начала нужно проинициализировать, dh = getDataHelper();
1
0 / 0 / 0
Регистрация: 17.11.2011
Сообщений: 9
05.07.2012, 17:12  [ТС]
тфу блин
спасибо
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
05.07.2012, 17:12
Помогаю со студенческими работами здесь

Заполнение ListView данными из ArrayList
Привет! Помогите решить проблему. Есть класс в котором настроен ArrayList: public class Colors { String name; Integer r; ...

Неверно отображается заполнение прогрессбара в элементах ListView
Добрый день. Мне нужно создать ListView, в элементах которого отображается ProgressBar нестандартного цвета. В методе getView моего списка...

Заполнение ListView
Создаю в xaml-разметке чистый ListView. Мне его надо заполнить программно. Причем количество столбов разное. Допусти у меня есть список...

Заполнение listview
Доброго дня! Как заполнять такой listview?

Заполнение ListView из БД
Добрый день! Прошу помощи у тех кто владеет Delfi Нужно код на дельфи переписать на c++ builder (XE8) with IBQuery1 do ...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru