Урок 52. SimpleCursorAdapter, пример использования
Re: Урок 52. SimpleCursorAdapter, пример использования
слушай, ну сделай ты нормаьлный запрос через "select * from table left outer join " и так далее. Сложно понять что там у тебя происходит. Как ты вообще выводишь это в лог..? и главное зачем. Оттестируй запрос в редакторе, потом полностью скопируй его в прогармму, но не через эту штуки, а нормально через rawQuery
R.id.team
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
Re: Урок 52. SimpleCursorAdapter, пример использования
Я вот так пишу для отладки
Т.е. у меня в отладку идет весь запрос! Если в нем ошибка, я просто из лога копирую запрос в редактор и проверяю что там не так.
Код: Выделить всё
String strQ="select top(1) *** from *** where *** order by *** desc";
Log.d("***","strq= "+ strQ);
Cursor c = this.mDb.rawQuery(strQ, null);
if (c != null) {
c.moveToFirst();
return c.getInt(c.getColumnIndex("***"));
}else{
return 0;
}
R.id.team
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
Re: Урок 52. SimpleCursorAdapter, пример использования
Давайте я Вам сброшу сам проект, а вы посмотрите?
Куда можно отправить?
Куда можно отправить?
Re: Урок 52. SimpleCursorAdapter, пример использования
сорри, совершенно нет на такие действия времени..
пиши сюда то, что я подсказала, проверь то, что я подсказала. По raw query тоже урок есть. Там же все намного проще, чем ты сделал.
Давай выложи скрипты создания таблиц. Стопудово у тебя неправильные там поля стоят, нельзя так две таблицы связывать по id.
Потихоньку во всем разберешься.
пиши сюда то, что я подсказала, проверь то, что я подсказала. По raw query тоже урок есть. Там же все намного проще, чем ты сделал.
Давай выложи скрипты создания таблиц. Стопудово у тебя неправильные там поля стоят, нельзя так две таблицы связывать по id.
Потихоньку во всем разберешься.
R.id.team
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
Re: Урок 52. SimpleCursorAdapter, пример использования
вот скрипты создания таблиц.
Переделал запрос, связываю " String table = "Nakladnaya as NAKLADNAYA inner join JURNAL_NAKLADHYH as JURNAL on NAKLADNAYA._id = JURNAL._idJURNAL_NAKLADHYH";"
вывожу в лог так:
В лог выводится:"02-28 14:10:22.183: D/myLogs(7588): _id = 2; Name = Продукт №2; Klient = Антипова Лариса ЧП--Ф2; NomerDoc = 2;
"
Код: Выделить всё
// имя таблицы Журнала Заказов, поля и запрос создания
private static final String JURNAL_NAKLADHYH_TABLE = "JURNAL_NAKLADHYH";
public static final String JURNAL_NAKLADHYH_COLUMN_ID = "_id";
public static final String JURNAL_NAKLADHYH_COLUMN_ID_NEW_OLD = "_id_New_Old";
public static final String JURNAL_NAKLADHYH_COLUMN_ID_JURNAL_NAKLADHYH = "_idJURNAL_NAKLADHYH";
public static final String JURNAL_NAKLADHYH_COLUMN_NAME = "name";
public static final String JURNAL_NAKLADHYH_COLUMN_IDKLIENT = "_idKlient";
public static final String JURNAL_NAKLADHYH_COLUMN_NOMERZAKAZA = "NomerZakaza";
public static final String JURNAL_NAKLADHYH_COLUMN_SUMMA = "Summa";
public static final String JURNAL_NAKLADHYH_COLUMN_DATA = "Data";
public static final String JURNAL_NAKLADHYH_COLUMN_TIME = "Time";
public static final String JURNAL_NAKLADHYH_COLUMN_GPS_SHIROTA = "GPS_Shirota";
public static final String JURNAL_NAKLADHYH_COLUMN_GPS_DOLGOTA = "GPS_Dolgota";
private static final String JURNAL_NAKLADHYH_TABLE_CREATE = "create table " + JURNAL_NAKLADHYH_TABLE
+ "(" + JURNAL_NAKLADHYH_COLUMN_ID + " integer primary key ASC AUTOINCREMENT, "
+ JURNAL_NAKLADHYH_COLUMN_ID_JURNAL_NAKLADHYH+ " integer, "
+ JURNAL_NAKLADHYH_COLUMN_ID_NEW_OLD+ " integer, "
//+ JURNAL_NAKLADHYH_COLUMN_ID_JURNAL_NAKLADHYH+ " integer, "
+ JURNAL_NAKLADHYH_COLUMN_NAME+ " text, "
+ JURNAL_NAKLADHYH_COLUMN_IDKLIENT+ " integer, "
+ JURNAL_NAKLADHYH_COLUMN_NOMERZAKAZA+ " integer, "
+ JURNAL_NAKLADHYH_COLUMN_SUMMA+ " real, "
+ JURNAL_NAKLADHYH_COLUMN_DATA+ " text, "
+ JURNAL_NAKLADHYH_COLUMN_TIME+ " text, "
+ JURNAL_NAKLADHYH_COLUMN_GPS_SHIROTA+ " real, "
+ JURNAL_NAKLADHYH_COLUMN_GPS_DOLGOTA+ " real"
+ ");";
// имя таблицы Накладная, поля и запрос создания
private static final String NAKLADNAYA_TABLE = "Nakladnaya";
public static final String NAKLADNAYA_COLUMN_ID = "_id";
public static final String NAKLADNAYA_COLUMN_ID_NAKLADNAYA = "_idNakladnaya";
public static final String NAKLADNAYA_COLUMN_ID_TOVAR = "_idTovar";
public static final String NAKLADNAYA_COLUMN_NAME = "name";
public static final String NAKLADNAYA_COLUMN_KOLSHTUK = "KolShtuk";
public static final String NAKLADNAYA_COLUMN_KOLUPAK = "KolUpak";
public static final String NAKLADNAYA_COLUMN_CENABAZ = "CtnaBaz";
public static final String NAKLADNAYA_COLUMN_SKIDKA = "Skidka";
public static final String NAKLADNAYA_COLUMN_CENABEZSKIDKI = "CenaBezSkidki";
public static final String NAKLADNAYA_COLUMN_SUMMA = "Summa";
private static final String NAKLADNAYA_TABLE_CREATE = "create table " + NAKLADNAYA_TABLE
+ "(" + NAKLADNAYA_COLUMN_ID + " integer primary key ASC AUTOINCREMENT, "
+ NAKLADNAYA_COLUMN_ID_NAKLADNAYA+ " integer, "
+ NAKLADNAYA_COLUMN_ID_TOVAR+ " integer, "
+ NAKLADNAYA_COLUMN_NAME+ " text, "
+ NAKLADNAYA_COLUMN_KOLSHTUK+ " real, "
+ NAKLADNAYA_COLUMN_KOLUPAK+ " real, "
+ NAKLADNAYA_COLUMN_CENABAZ+ " real, "
+ NAKLADNAYA_COLUMN_SKIDKA+ " real, "
+ NAKLADNAYA_COLUMN_CENABEZSKIDKI+ " real, "
+ NAKLADNAYA_COLUMN_SUMMA+ " real"
+ ");";
вывожу в лог так:
Код: Выделить всё
..........
startManagingCursor(c);
..........
void logCursor(Cursor c) {
if (c != null) {
if (c.moveToFirst()) {
String str;
do {
str = "";
for (String cn : c.getColumnNames()) {
str = str.concat(cn + " = " + c.getString(c.getColumnIndex(cn)) + "; ");
}
Log.d(LOG_TAG, str);
} while (c.moveToNext());
}
} else
Log.d(LOG_TAG, "Cursor is null");
}
"
Re: Урок 52. SimpleCursorAdapter, пример использования
опять каша у тебя.
Запрос, который ты привел не соответсвует выводимым данным. Полей я вообще не вижу. Это вообще даже не запрос, а кусок какой-то..
Напиши нормальные скрипты таблиц
create table ...
одну и вторую - это на будущее, т.к. тот, кто захочет тебе помочь может проиграть из у себя в сиквел-редакторе ипосмотреь. Еще желательно приводить скрипты добавления данных, чтоб в таблицы хотя бы по паре строчек добавить.
А это что такое означает integer primary key ASC AUTOINCREMENT,
ASC - не знаю даже..
Второе, замени ты inner на left outer join по-человечески.. не прокатит там inner..
Если у тебя ошибки нету,а на экране пустота, то наверняка в курсоре нету данных.
Запрос, который ты привел не соответсвует выводимым данным. Полей я вообще не вижу. Это вообще даже не запрос, а кусок какой-то..
Напиши нормальные скрипты таблиц
create table ...
одну и вторую - это на будущее, т.к. тот, кто захочет тебе помочь может проиграть из у себя в сиквел-редакторе ипосмотреь. Еще желательно приводить скрипты добавления данных, чтоб в таблицы хотя бы по паре строчек добавить.
А это что такое означает integer primary key ASC AUTOINCREMENT,
ASC - не знаю даже..
Второе, замени ты inner на left outer join по-человечески.. не прокатит там inner..
Если у тебя ошибки нету,а на экране пустота, то наверняка в курсоре нету данных.
R.id.team
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
Re: Урок 52. SimpleCursorAdapter, пример использования
Переделал запрос. Проверил в редакторе, все работает.
На выходе в лог я получаю:
Ошибка тут не в запросе.
Я с передачей в адаптер где-то туплю.....
а именно в этой строке:
Думаю что нельзя просто указать "Name", а как можно я не знаю....
Код: Выделить всё
String sqlQuery = "select Nakladnaya._id, Nakladnaya.name as Name, JURNAL_NAKLADHYH.name as Klient, JURNAL_NAKLADHYH._idJURNAL_NAKLADHYH as NomerDoc from JURNAL_NAKLADHYH left outer join Nakladnaya on JURNAL_NAKLADHYH._idJURNAL_NAKLADHYH = Nakladnaya._id where JURNAL_NAKLADHYH._idJURNAL_NAKLADHYH =2";
c = db.zapros2(sqlQuery);
logCursor(c);
Код: Выделить всё
02-28 15:00:12.513: D/myLogs(8927): _id = 2; Name = Продукт №2; Klient = Антипова Лариса ЧП--Ф2; NomerDoc = 2;
Я с передачей в адаптер где-то туплю.....
а именно в этой строке:
Код: Выделить всё
String[] data = new String[] {"Name", "Klient" , "NomerDoc" };
Re: Урок 52. SimpleCursorAdapter, пример использования
У меня так в классе на SimpleCursorAdapter
Код: Выделить всё
@Override
public void bindView(View view, Context context, Cursor cursor) {
String sName = cursor.getString(cursor.getColumnIndex(a.ROW_NAME));
String sAddr = cursor.getString(cursor.getColumnIndex(a.ROW_ADDR));
TextView tvNameFirma = (TextView) view.findViewById(R.id.tvNameFirma);
TextView tvAddrFirma = (TextView) view.findViewById(R.id.tvAddrFirma);
tvNameFirma.setText(sName);
tvAddrFirma.setText(sAddr);
}
R.id.team
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
Re: Урок 52. SimpleCursorAdapter, пример использования
спасибо, буду разбираться.
Re: Урок 52. SimpleCursorAdapter, пример использования
но я из этой процедуры много чего убрала, т.к. оно мне надо там иметь. Но если ее убрать в простейшем виде у меня все равно список высвечивается норм. А это просто как иная процедура связывания полей курсора и списка. Может там у тебя ошибки повыскакивают более понятные.
R.id.team
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
Re: Урок 52. SimpleCursorAdapter, пример использования
Я с андроидом работаю всего неделю.
Мне многое еще не понятно.
Теперь думаю как Ваш пример прикрутить к своему.
Мне многое еще не понятно.
Код: Выделить всё
String[] data = new String[] { "Name", "Klient", "NomerDoc" };
int[] to = new int[] { R.id.TxtTovar, R.id.TxtKolShtuk, R.id.TxtSumma };
// создаем адаптер и настраиваем список
scAdapter = new SimpleCursorAdapter(this, R.layout.shablonnakladnaya,c, data, to);
// adapter = new ArrayAdapter<String>(this, R.layout.item,
// R.id.tvText,data);
gridNakladnaya = (GridView) findViewById(R.id.gridNakladnaya);
gridNakladnaya.setAdapter(scAdapter);
adjustGridView();
.......
private void adjustGridView() {
gridNakladnaya.setNumColumns(1);
gridNakladnaya.setVerticalSpacing(3);
}
Re: Урок 52. SimpleCursorAdapter, пример использования
я дала кусок класса на основе симпладаптера
а это у вас что такое??
private void adjustGridView() {
gridNakladnaya.setNumColumns(1);
gridNakladnaya.setVerticalSpacing(3);
}
а это у вас что такое??
private void adjustGridView() {
gridNakladnaya.setNumColumns(1);
gridNakladnaya.setVerticalSpacing(3);
}
R.id.team
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
Re: Урок 52. SimpleCursorAdapter, пример использования
а gridview зачем??
если вы всего неделю, делайте как в уроке! ничего не меняйте!
если вы всего неделю, делайте как в уроке! ничего не меняйте!
R.id.team
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
Re: Урок 52. SimpleCursorAdapter, пример использования
От я болван!
Все у меня работало и даже на старом варианте запроса.
Просто сразу же я закрывал курсор cursor.close();
Поэтому и не отображались данные на экране.
Olivka - Большое Вам спасибо за подсказку по оптимизации запроса.
Все у меня работало и даже на старом варианте запроса.
Просто сразу же я закрывал курсор cursor.close();
Поэтому и не отображались данные на экране.
Olivka - Большое Вам спасибо за подсказку по оптимизации запроса.
Re: Урок 52. SimpleCursorAdapter, пример использования
Пожалуйста.
Вообще-то я думаю, что грид нужен только в определенных случаях. В основном лучше использовать листвью, кастомизируя его строчки с помощью relative layout, вставляя туда нужные данные. У меня там помещается наименование, под ним меленько допустим адрес, справа сумма, под ней процент и так далее. Так намного приличней смотрится. Например, если нужно по нажатию на строчку что-то определенное запускать или делать.
Имхо грид - это привычка, принесенная с десктопа.
Вообще-то я думаю, что грид нужен только в определенных случаях. В основном лучше использовать листвью, кастомизируя его строчки с помощью relative layout, вставляя туда нужные данные. У меня там помещается наименование, под ним меленько допустим адрес, справа сумма, под ней процент и так далее. Так намного приличней смотрится. Например, если нужно по нажатию на строчку что-то определенное запускать или делать.
Имхо грид - это привычка, принесенная с десктопа.
R.id.team
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
Re: Урок 52. SimpleCursorAdapter, пример использования
Подскажите, пожалуйста куда бежать где искать если
Спасибо за подсказку.
, а необходимо вывести список из базы данных, и дать возможность юзеру "чекнуть" галочку?SimpleCursorAdapter Checkable-производные не воспримет
Спасибо за подсказку.
Re: Урок 52. SimpleCursorAdapter, пример использования
Автор, напишите в статье урока, что данный подход устарел. А то это вводит в заблуждение начинающих.
R.id.team
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
Re: Урок 52. SimpleCursorAdapter, пример использования
Здравствуйте. Только начинаю осваивать Android. Появился вопрос.
Взял из вашего урока класс DB.java добавил к себе в проект, проблема в том что при попытке работать с ним не из MainActivity.java а из другого класса.
Вылетает exception при попытке открыть подключение к базе.
Здесь в MainActivity.java вызываю метод другого класса.
И в этом классе пытаюсь открыть подключение к базе. вылетает ошибка
E/AndroidRuntime(23004): FATAL EXCEPTION: main
E/AndroidRuntime(23004): java.lang.RuntimeException: Unable to start activity ComponentInfo{ru.sr/ru.sr.MainActivity}: java.lang.NullPointerException
E/AndroidRuntime(23004): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1955)
E/AndroidRuntime(23004): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1980)
E/AndroidRuntime(23004): at android.app.ActivityThread.access$600(ActivityThread.java:122)
E/AndroidRuntime(23004): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1146)
E/AndroidRuntime(23004): at android.os.Handler.dispatchMessage(Handler.java:99)
E/AndroidRuntime(23004): at android.os.Looper.loop(Looper.java:137)
E/AndroidRuntime(23004): at android.app.ActivityThread.main(ActivityThread.java:4340)
E/AndroidRuntime(23004): at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime(23004): at java.lang.reflect.Method.invoke(Method.java:511)
E/AndroidRuntime(23004): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
E/AndroidRuntime(23004): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
E/AndroidRuntime(23004): at dalvik.system.NativeStart.main(Native Method)
E/AndroidRuntime(23004): Caused by: java.lang.NullPointerException
E/AndroidRuntime(23004): at android.content.ContextWrapper.openOrCreateDatabase(ContextWrapper.java:221)
E/AndroidRuntime(23004): at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:157)
E/AndroidRuntime(23004): at ru.sr.DB.open(DB.java:60)
E/AndroidRuntime(23004): at ru.sr.DataModel.init(DataModel.java:20)
E/AndroidRuntime(23004): at ru.sr.MainActivity.onCreate(MainActivity.java:31)
E/AndroidRuntime(23004): at android.app.Activity.performCreate(Activity.java:4465)
E/AndroidRuntime(23004): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
E/AndroidRuntime(23004): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1919)
Заранее спасибо.
Взял из вашего урока класс DB.java добавил к себе в проект, проблема в том что при попытке работать с ним не из MainActivity.java а из другого класса.
Вылетает exception при попытке открыть подключение к базе.
Код: Выделить всё
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
datamodel.init();
}
Код: Выделить всё
public class DataModel extends Activity {
DB db;
public void init(){
db = new DB(DataModel.this);
db.open();
}
}
E/AndroidRuntime(23004): FATAL EXCEPTION: main
E/AndroidRuntime(23004): java.lang.RuntimeException: Unable to start activity ComponentInfo{ru.sr/ru.sr.MainActivity}: java.lang.NullPointerException
E/AndroidRuntime(23004): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1955)
E/AndroidRuntime(23004): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1980)
E/AndroidRuntime(23004): at android.app.ActivityThread.access$600(ActivityThread.java:122)
E/AndroidRuntime(23004): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1146)
E/AndroidRuntime(23004): at android.os.Handler.dispatchMessage(Handler.java:99)
E/AndroidRuntime(23004): at android.os.Looper.loop(Looper.java:137)
E/AndroidRuntime(23004): at android.app.ActivityThread.main(ActivityThread.java:4340)
E/AndroidRuntime(23004): at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime(23004): at java.lang.reflect.Method.invoke(Method.java:511)
E/AndroidRuntime(23004): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
E/AndroidRuntime(23004): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
E/AndroidRuntime(23004): at dalvik.system.NativeStart.main(Native Method)
E/AndroidRuntime(23004): Caused by: java.lang.NullPointerException
E/AndroidRuntime(23004): at android.content.ContextWrapper.openOrCreateDatabase(ContextWrapper.java:221)
E/AndroidRuntime(23004): at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:157)
E/AndroidRuntime(23004): at ru.sr.DB.open(DB.java:60)
E/AndroidRuntime(23004): at ru.sr.DataModel.init(DataModel.java:20)
E/AndroidRuntime(23004): at ru.sr.MainActivity.onCreate(MainActivity.java:31)
E/AndroidRuntime(23004): at android.app.Activity.performCreate(Activity.java:4465)
E/AndroidRuntime(23004): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
E/AndroidRuntime(23004): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1919)
Заранее спасибо.
Re: Урок 52. SimpleCursorAdapter, пример использования
у тебя сразу идет datamodel.init(); А создать?? поэтом у тебя ошибка NullPointerException
R.id.team
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198