Урок 54. Кастомизация списка. Создаем свой адаптер
Re: Урок 54. Кастомизация списка. Создаем свой адаптер
Если всё таки не получится то следующий шаг будет верным - попробуйте сериализовать ResultSet. Посмотрел по сериализации достаточно примеров, так что проблем не должно возникнуть.
R.id.team
Политика на форуме запрещена
Политика на форуме запрещена
Re: Урок 54. Кастомизация списка. Создаем свой адаптер
Сделала в точности по уроку, но запустить не могу, у меня почему-то компилятор просит убрать все override из класса boxAdapter. Над каждым методом пишет, что он must override метод суперкласса, а в решении говорит - давайте сделаем ему "remove @override anotation"
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: Урок 54. Кастомизация списка. Создаем свой адаптер
Зайдите в Project->Properties->Java Compiler справа поставьте Compiler compliance level - 1.6,более старые версии JAVA не поддерживают аннотацию @Override
Re: Урок 54. Кастомизация списка. Создаем свой адаптер
ох, я так и сделала еще вчера, но если кому-то пригодится.. ничего у меня не исчезло, переключала эти версии, и хотя проект перекомпилировался - это не помогло. Несколько раз закрывала открывала эклипс, потом еще пару раз после переделок туда и обратно сделала проекту Clean, и только потом оно заработало!
А не подскажите, чтобы не рыться, а то голова уже пухнет - почему оно у меня теперь на перестановку версии на 1.7 ругается, говорит, что он мне не подоходит? (хотя один раз самый первый мне удалось на нее проект переключить). И вообще что означают эти версии, какая лучше и зачем оно было установлено в 1.5 по умолчанию? или это я где-то ее установила сама? Это зависит, наверное, от target version джавы приложения, указанной в манифесте?
А не подскажите, чтобы не рыться, а то голова уже пухнет - почему оно у меня теперь на перестановку версии на 1.7 ругается, говорит, что он мне не подоходит? (хотя один раз самый первый мне удалось на нее проект переключить). И вообще что означают эти версии, какая лучше и зачем оно было установлено в 1.5 по умолчанию? или это я где-то ее установила сама? Это зависит, наверное, от target version джавы приложения, указанной в манифесте?
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: Урок 54. Кастомизация списка. Создаем свой адаптер
Ну вы же на JAVA кодите в Android, поэтому нет ничего удивительного, что для компиляции, компоновки используются инструменты JDK.
Если ругается на 1.7 - на папке проекта (в Package Explorer) кликните правой кнопкой мыши выберите Android Tools->Fix Project Properties
Если ругается на 1.7 - на папке проекта (в Package Explorer) кликните правой кнопкой мыши выберите Android Tools->Fix Project Properties
Re: Урок 54. Кастомизация списка. Создаем свой адаптер
а 1.7 это лучше? я про то, что не знаю надо оно мне или нет..
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: Урок 54. Кастомизация списка. Создаем свой адаптер
Вообще для Android достаточно минимум 1.5 если не ошибаюсь, единственное накладки бывают появляются с аннотациями, которые с каждой новой версией JDK только расширяют, но основных языковых возможностей вполне достаточно. Кстати у меня нет проблем с @Override, хотя в проектах стоит 1.5, может в ADT21, которой я пользуюсь, как-то это учли.
-
- Сообщения: 103
- Зарегистрирован: 10 сен 2012, 11:58
Re: Урок 54. Кастомизация списка. Создаем свой адаптер
Здравствуйте,
Ну вроде все получилось. Приложение, которое я попытался реализовать, используя пример из этого урока, работает. Есть только одно но: отмеченные чекбоксы в ChildActivity при возвращении обратно не отображаются. Понимаю почему это происходит, поэтому попытался сделать следующее:
Создал методы:
при вызове onPause() чекнутые значения сохраняются при помощи SharedPreferences
а при вызове onResume должны загружаться.
но этого не происходит, при вызове onResume приложение вылетает. Решил, что это из-за того, что еще нет отмеченных чекбоксов и сохраненных данных, однако даже при использовании savebox в onResume, результат такой же.
Посоветуйте пожалуйста, возможные пути решения проблемы как в целом (сохранение состояния чекбоксов при смене жизненного цикла активити), так и в частности.
Спасибо.
Ну вроде все получилось. Приложение, которое я попытался реализовать, используя пример из этого урока, работает. Есть только одно но: отмеченные чекбоксы в ChildActivity при возвращении обратно не отображаются. Понимаю почему это происходит, поэтому попытался сделать следующее:
Создал методы:
Код: Выделить всё
public CheckBox checkboxer() {
final CheckBox box = (CheckBox) findViewById(R.id.cbBox);
Log.d(LOG_TAG, "make ListView clickable");
lvMain.setOnItemClickListener(new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
box.setChecked(true);
}
});
return box;
}
private void savebox(final boolean isChecked) {
SharedPreferences sharedPreferences = getPreferences(Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putBoolean("check", isChecked);
editor.commit();
Log.d(LOG_TAG, "checkbox is saved");
}
private boolean load() {
SharedPreferences sharedPreferences = getPreferences(Context.MODE_PRIVATE);
return sharedPreferences.getBoolean("check", false);
}
Код: Выделить всё
@Override
protected void onPause() {
super.onPause();
Log.d(LOG_TAG, "ChildActivity: onPause()");
// закрываем подключение к БД
DataSourceChild.closeChild();
savebox(checkboxer().isChecked());
}
Код: Выделить всё
protected void onResume() {
super.onResume();
Log.d(LOG_TAG, "ChildActivity: onResume()");
// открываем подключение к БД
DataSourceChild.openToWriteChild();
checkboxer().setChecked(load());
}
Посоветуйте пожалуйста, возможные пути решения проблемы как в целом (сохранение состояния чекбоксов при смене жизненного цикла активити), так и в частности.
Спасибо.
Re: Урок 54. Кастомизация списка. Создаем свой адаптер
Когда ж вы научитесь предоставлять лог ошибок. У меня отсутствуют экстрасенсорные навыки, но осмелюсь предположить что ошибка NullpointerException.
R.id.team
Политика на форуме запрещена
Политика на форуме запрещена
-
- Сообщения: 103
- Зарегистрирован: 10 сен 2012, 11:58
Re: Урок 54. Кастомизация списка. Создаем свой адаптер
О, простите.
256-я строка, как раз и есть checkboxer().setChecked(load()); в onResume.
Спасибо.
Код: Выделить всё
08:18:37.830 1773 example.CustomAdapter ERROR AndroidRuntime FATAL EXCEPTION: main
08:18:37.830 1773 example.CustomAdapter ERROR AndroidRuntime java.lang.RuntimeException: Unable to resume activity {example.CustomAdapter/example.CustomAdapter.ChildActivity}: java.lang.NullPointerException
08:18:37.830 1773 example.CustomAdapter ERROR AndroidRuntime at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2120)
08:18:37.830 1773 example.CustomAdapter ERROR AndroidRuntime at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2135)
08:18:37.830 1773 example.CustomAdapter ERROR AndroidRuntime at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1668)
08:18:37.830 1773 example.CustomAdapter ERROR AndroidRuntime at android.app.ActivityThread.access$1500(ActivityThread.java:117)
08:18:37.830 1773 example.CustomAdapter ERROR AndroidRuntime at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931)
08:18:37.830 1773 example.CustomAdapter ERROR AndroidRuntime at android.os.Handler.dispatchMessage(Handler.java:99)
08:18:37.830 1773 example.CustomAdapter ERROR AndroidRuntime at android.os.Looper.loop(Looper.java:123)
08:18:37.830 1773 example.CustomAdapter ERROR AndroidRuntime at android.app.ActivityThread.main(ActivityThread.java:3683)
08:18:37.830 1773 example.CustomAdapter ERROR AndroidRuntime at java.lang.reflect.Method.invokeNative(Native Method)
08:18:37.830 1773 example.CustomAdapter ERROR AndroidRuntime at java.lang.reflect.Method.invoke(Method.java:507)
08:18:37.830 1773 example.CustomAdapter ERROR AndroidRuntime at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
08:18:37.830 1773 example.CustomAdapter ERROR AndroidRuntime at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
08:18:37.830 1773 example.CustomAdapter ERROR AndroidRuntime at dalvik.system.NativeStart.main(Native Method)
08:18:37.830 1773 example.CustomAdapter ERROR AndroidRuntime Caused by: java.lang.NullPointerException
08:18:37.830 1773 example.CustomAdapter ERROR AndroidRuntime at example.CustomAdapter.ChildActivity.onResume[color=#FF0000](ChildActivity.java:256)[/color]
08:18:37.830 1773 example.CustomAdapter ERROR AndroidRuntime at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1150)
08:18:37.830 1773 example.CustomAdapter ERROR AndroidRuntime at android.app.Activity.performResume(Activity.java:3832)
08:18:37.830 1773 example.CustomAdapter ERROR AndroidRuntime at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2110)
08:18:37.830 1773 example.CustomAdapter ERROR AndroidRuntime ... 12 more
Спасибо.
Re: Урок 54. Кастомизация списка. Создаем свой адаптер
я всё таки обладаю экстрасенсорными навыками о чём я и говорил NullPointerException
Теперь моё следующее предсказание: приложение падает вот на этой строке
Теперь моё следующее предсказание: приложение падает вот на этой строке
Так как осмелю предположить в момент onResume() лист lvMain ещё не определён.lvMain.setOnItemClickListener(new AdapterView.OnItemClickListener()
R.id.team
Политика на форуме запрещена
Политика на форуме запрещена
-
- Сообщения: 103
- Зарегистрирован: 10 сен 2012, 11:58
Re: Урок 54. Кастомизация списка. Создаем свой адаптер
Правильно. Что делать в этом случае?
-
- Сообщения: 103
- Зарегистрирован: 10 сен 2012, 11:58
Re: Урок 54. Кастомизация списка. Создаем свой адаптер
Предвидя, создал отдельный метод
который загружается в onCreate.
Код: Выделить всё
public void loader(int val) {
item_values = child_datasource.readItem(val);
// определяем адаптер
boxAdapter = new BoxAdapter(this, item_values);
// настраиваем список
lvMain = (ListView) findViewById(R.id.lvMain);
// выставляем адаптер
lvMain.setAdapter(boxAdapter);
// регистратор контекстного меню
registerForContextMenu(lvMain);
// делаем список кликабл
lvMain.setOnItemClickListener(new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
box = (CheckBox) view.findViewById(R.id.cbBox);
box.setChecked(true);
// уведомляем, что данные изменились
boxAdapter.notifyDataSetChanged();
}
});
boxAdapter.notifyDataSetChanged();
}
-
- Сообщения: 103
- Зарегистрирован: 10 сен 2012, 11:58
Re: Урок 54. Кастомизация списка. Создаем свой адаптер
Извините, что его загружать и в onResume?
Re: Урок 54. Кастомизация списка. Создаем свой адаптер
Здравствуйте!
помогите, пожалуйста,в следующем. Создала адаптер на основе SimplecuursorAdapter с тем, чтобы попробовать выделять строчки курсора. Теперь вот хочу раскрашивать строчки в зависимости от данных в таблице (т.е. от данных в курсоре, "связанном" с listview).
Я так поняла, что нужно внести изменнеия в метод getView, правильно?
Но я не пойму, как из этого метода "добраться", обратиться к соответствующей строчке в курсоре.
Я вижу, что сюда передается позиция, но как использовать ее, чтоб понять, в какую строку курсора мне обратиться?
Большое спасибо.
помогите, пожалуйста,в следующем. Создала адаптер на основе SimplecuursorAdapter с тем, чтобы попробовать выделять строчки курсора. Теперь вот хочу раскрашивать строчки в зависимости от данных в таблице (т.е. от данных в курсоре, "связанном" с listview).
Я так поняла, что нужно внести изменнеия в метод getView, правильно?
Но я не пойму, как из этого метода "добраться", обратиться к соответствующей строчке в курсоре.
Код: Выделить всё
@Override
public View getView(int position, View convertView, ViewGroup parent) {
...
}
Большое спасибо.
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: Урок 54. Кастомизация списка. Создаем свой адаптер
dil_android, внимательно ещё раз посмотрите на LifeCycle активити. Второй раз добавлять не нужно, просто метод loader запускайте в onResume().
R.id.team
Политика на форуме запрещена
Политика на форуме запрещена
Re: Урок 54. Кастомизация списка. Создаем свой адаптер
Olivka
данные нужно вносить в bindView, так как именно в этом методе вы получаете данные.
Вот вам курсор в методе, с него вытаскиваете данные. Вытаскиваете вьюхи и делайте с ними что хотите.
данные нужно вносить в bindView, так как именно в этом методе вы получаете данные.
Код: Выделить всё
@Override
public void bindView(View view, Context _context, Cursor _cursor) {
String title = _cursor.getString(_cursor.getColumnIndex(AppData.COLUMN_TITLE));
Double price = Double.parseDouble(_cursor.getString(_cursor.getColumnIndex(AppData.COLUMN_PRICE)));
TextView titleTV = (TextView) view.findViewById(R.id.titleTV);
TextView priceTV = (TextView) view.findViewById(R.id.priceTV);
titleTV.setText(title);
priceTV.setText(price.toString() + "$");
}
R.id.team
Политика на форуме запрещена
Политика на форуме запрещена
Re: Урок 54. Кастомизация списка. Создаем свой адаптер
Так меня смутило то, что этот метод bindView же вызывается автоматом?
а я жать хочу на элементы списка
Но я уже нашла, это делаетс ятам так
и так далее
Подскажите, пожалуйста, как цвет выбрать такой как я хочу, а то я пытаюсь цвет выставить а там только свойства Color.GREEN допустим.. в общем, очень ограниченный набор, а я хочу зеленый не такого оттенка..
а я жать хочу на элементы списка
Но я уже нашла, это делаетс ятам так
Код: Выделить всё
View v = super.getView(position, convertView, parent);
Cursor c = getCursor();
c.moveToPosition(position);
int col = c.getColumnIndex("chk");
Код: Выделить всё
v.setBackgroundColor(Color.GREEN);
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: Урок 54. Кастомизация списка. Создаем свой адаптер
rezak90
Я бы вам медаль дала за стойкость, спасибо
Я бы вам медаль дала за стойкость, спасибо
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: Урок 54. Кастомизация списка. Создаем свой адаптер
Olivka
res-values-color (если нет файла color.xml то создайте его) и там прописывайте цвета в RGB стиле (например: #000000 - чёрный если не ошибаюсь).
res-values-color (если нет файла color.xml то создайте его) и там прописывайте цвета в RGB стиле (например: #000000 - чёрный если не ошибаюсь).
R.id.team
Политика на форуме запрещена
Политика на форуме запрещена