Урок 52. SimpleCursorAdapter, пример использования
Re: Урок 52. SimpleCursorAdapter, пример использования
(flag==1) ? "Да" : "Нет";
п.с. Пишу по памяти, может немного путаю синтаксис.
п.с. Пишу по памяти, может немного путаю синтаксис.
Re: Урок 52. SimpleCursorAdapter, пример использования
Кажется понял:Olivka писал(а): ...
а можно создать свой адаптер, переопределить в нем метод bindView..
Код: Выделить всё
public class MyAdapter extends CursorAdapter {
LayoutInflater inflater;
MyAdapter(Context context, Cursor c) {
super (context, c);
inflater = LayoutInflater.from(context);
}
@Override
public void bindView(View arg0, Context arg1, Cursor arg2) {
// TODO Auto-generated method stub
}
@Override
public View newView(Context arg0, Cursor arg1, ViewGroup arg2) {
// TODO Auto-generated method stub
return null;
}
}
Re: Урок 52. SimpleCursorAdapter, пример использования
говорите поняли, а ничего не написали..
и запросом (2й способ) тоже можно. В сиквеле есть case.
и запросом (2й способ) тоже можно. В сиквеле есть case.
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, пример использования
Не написал пока потому что создание custom адаптера тема для меня новая.
Попробовал синтаксис case в sqlite - действительно работает. Осталось выбрать что лучше - использовать свой select c case или создать свой адаптер.
Попробовал синтаксис case в sqlite - действительно работает. Осталось выбрать что лучше - использовать свой select c case или создать свой адаптер.
Re: Урок 52. SimpleCursorAdapter, пример использования
лучше case
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, пример использования
без кастомных адаптеров никуда
R.id.team
Политика на форуме запрещена
Политика на форуме запрещена
Re: Урок 52. SimpleCursorAdapter, пример использования
смотря какая задача. Есл инужно всего лишь написать Да-Нет - лучше CASE.rezak90 писал(а):без кастомных адаптеров никуда
Вообще очень, очень, очень многое можно решить простым sql-запросом. Просто народ зачастую этого не знает...
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, пример использования
в каждом проекте свой дизайн и он соответственно кастомный и по этому всегда нужно использовать кастомные адаптерыOlivka писал(а):смотря какая задача. Есл инужно всего лишь написать Да-Нет - лучше CASE.rezak90 писал(а):без кастомных адаптеров никуда
Вообще очень, очень, очень многое можно решить простым sql-запросом. Просто народ зачастую этого не знает...
R.id.team
Политика на форуме запрещена
Политика на форуме запрещена
Re: Урок 52. SimpleCursorAdapter, пример использования
Ну вот хотел обойтись без кастомных адаптеров, но похоже придется использовать. В моей задаче в списке элементы списка берутся из базы, некоторые элементы в зависимости от значения данных надо подсвечивать. Без кастомного адаптера такое не знаю как сделать. А с адаптером все просто - проверяем данные по условию и подсвечиваем элементы.
С другой стороны, без необходимости кастомный адаптер лучше не использовать, поскольку это дополнительные ресурсы на создание объектов в адаптере при поиске экранных view
(имеется ввиду конструкция вида obj1 = (ViewClass)findViewById(ViewId) )
(такие адаптеры создаются насколько я понимаю почти исключительно для модификации данных при выводе в элемент списка например или подскажите зачем еще их создавать?).
С другой стороны, без необходимости кастомный адаптер лучше не использовать, поскольку это дополнительные ресурсы на создание объектов в адаптере при поиске экранных view
(имеется ввиду конструкция вида obj1 = (ViewClass)findViewById(ViewId) )
(такие адаптеры создаются насколько я понимаю почти исключительно для модификации данных при выводе в элемент списка например или подскажите зачем еще их создавать?).
Re: Урок 52. SimpleCursorAdapter, пример использования
какие ещё дополнительные ресурсы? а нативный в себе никаких объектов не создаёт?поскольку это дополнительные ресурсы на создание объектов
Кастомизацию лучше делать для лучшего контроля над приложением, когда пишется свой код то всегда легче найти где ошибка, десятки примеров могу привести где есть ошибки в тех местах где мы просто используем чужой/нативный код (например actionbarsherlock или holoeverywhere имеют не мало ошибок).
R.id.team
Политика на форуме запрещена
Политика на форуме запрещена
Re: Урок 52. SimpleCursorAdapter, пример использования
Вот пример использования адаптера для урока данной темы:
Создаем отдельный класс, наследующий CursorAdapter:
В классе МainActivity для использования адаптера делаем следующие изменения:
комментируем строки:
добавляем в раздел объявления полей класса:
и создаем адаптер:
Создаем отдельный класс, наследующий CursorAdapter:
Код: Выделить всё
public class MyCursorAdapter extends CursorAdapter {
public MyCursorAdapter(Context context, Cursor c) {
super(context, c);
// TODO Auto-generated constructor stub
}
@Override
public void bindView(View view, Context context, Cursor cursor) {
TextView tv = (TextView) view.findViewById(R.id.tvText);
ImageView im = (ImageView) view.findViewById(R.id.ivImg);
tv.setText("MYADAPTER "
+ cursor.getString(cursor.getColumnIndex(DB.COLUMN_TXT))); // R.drawable.ic_launcher
im.setImageResource(R.drawable.ic_launcher);
}
@Override
public View newView(Context context, Cursor cursor, ViewGroup parent) {
LayoutInflater inflater = LayoutInflater.from(context);
View v = inflater.inflate(R.layout.item, parent, false);
bindView(v, context, cursor);
return v;
}
}
В классе МainActivity для использования адаптера делаем следующие изменения:
комментируем строки:
Код: Выделить всё
scAdapter = new SimpleCursorAdapter(this, R.layout.item, cursor, from, to);
lvData = (ListView)findViewById(R.id.lvData);
lvData.setAdapter(scAdapter);
Код: Выделить всё
MyCursorAdapter mcAdapter;
Код: Выделить всё
mcAdapter = new MyCursorAdapter(this, cursor);
lvData = (ListView)findViewById(R.id.lvData);
lvData.setAdapter(mcAdapter);
Re: Урок 52. SimpleCursorAdapter, пример использования
чего то не понял, это вопрос или просто так пост (выше).
R.id.team
Политика на форуме запрещена
Политика на форуме запрещена
Re: Урок 52. SimpleCursorAdapter, пример использования
Код: Выделить всё
public class ActivityTwo extends Activity {
ListView lv = (ListView)findViewById(R.id.listView1);
private SimpleCursorAdapter ListAdapter;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.two);
String[] from = { MediaStore.MediaColumns.TITLE };
int[] to = { android.R.id.text1 };
CursorLoader cursorLoader = new CursorLoader(this,
MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, null, null, null,
MediaStore.Audio.Media.TITLE);
Cursor cursor = cursorLoader.loadInBackground();
ListAdapter = new SimpleCursorAdapter(this, android.R.layout.simple_list_item_1, cursor, from, to,
CursorAdapter.FLAG_REGISTER_CONTENT_OBSERVER);
lv.setAdapter(ListAdapter);
}Re: Урок 52. SimpleCursorAdapter, пример использования
Не знаю куда и написать сюда или в тему про фрагменты.
Вообщем есть ViewPager на котором через ListView выводятся списки. Данные берутся из БД. По вашему совету хотел использовать SimpleCursorAdapter, чтобы записи содержали ID и можно было легко изменять ListView во фрагменте. Но никак не могу побороть проблему что класс Fragment не знает половину нужных мне методов. Допустим в уроке про SimpleCursorAdapter есть строчка
startManagingCursor(cursor);
Так вот Fragment не знает что такое startManagingCursor.
Есть способ заставить работать startManagingCursor во фрагменте?
Вообщем есть ViewPager на котором через ListView выводятся списки. Данные берутся из БД. По вашему совету хотел использовать SimpleCursorAdapter, чтобы записи содержали ID и можно было легко изменять ListView во фрагменте. Но никак не могу побороть проблему что класс Fragment не знает половину нужных мне методов. Допустим в уроке про SimpleCursorAdapter есть строчка
startManagingCursor(cursor);
Так вот Fragment не знает что такое startManagingCursor.
Есть способ заставить работать startManagingCursor во фрагменте?
Re: Урок 52. SimpleCursorAdapter, пример использования
пишите во врагменте getActivity(), а потом методы активити.
Например так, getActivity().startManagingCursor(yourCursor);
Например так, getActivity().startManagingCursor(yourCursor);
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, пример использования
Почему simpleCursorAdapter не работает с фрагментами во ViewPager? Вызов c.requery() приводит к исчезновению всего ListView либо просто не обновляет данные в ListView.
И сразу ещё вопрос: Как сделать возможность множественного или одинарного выбора в ListView с simpleCursorAdapter'ом? Если в адаптер передавать android.R.layout.simple_list_item_single_choice, то непонятно что передавать в int to[]. Если создать свой xml с радиобаттоном, то радиобаттоны не связаны в группу и выбираются одновременно.
И сразу ещё вопрос: Как сделать возможность множественного или одинарного выбора в ListView с simpleCursorAdapter'ом? Если в адаптер передавать android.R.layout.simple_list_item_single_choice, то непонятно что передавать в int to[]. Если создать свой xml с радиобаттоном, то радиобаттоны не связаны в группу и выбираются одновременно.
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, пример использования
Я тоже сначала подумал, что что-то не то делаю. Потом проверил на обычном Activity всё отлично работает. У меня из фрагмента вызывается диалогфрагмент, в котором меняется база данных и после чего я вызываю c.requery(). Но ListView не обновляется. Только если пролистать на пару страниц, чтобы произошло событие onDestroyView, onCreatView, лист обновляется. Видимо что-то я упускаю, но не пойму что. Вот ссылка на проект: http://yadi.sk/d/T1-Xbp9O4m5gS
-
rhythmbox91
- Сообщения: 6
- Зарегистрирован: 15 май 2013, 17:22
Re: Урок 52. SimpleCursorAdapter, пример использования
Скажите пожалуйста. Я пару месяцев занимаюсь андроидом, и делаю сейчас свой небольшой проект для портфолио. Делая его появилась большая загвоздка. Сначала расскажу смысл проекта. С помощью броадкаста перехватываются сообщения, смотрится номер, если номер, если требуемый то смотрится на формат сообщения, если да то сообщение сохраняется в БД, иначе отправляется на обычный приемник. В самом приложении выводится с помощью simpleCursorAdapter список всех этих смс. Смысл этого всего - сюрприз для моей девушки. Сделал к нему виджет, чтоб красиво всегда последняя запись выводилась на экране. Решил расширить его, и сделал функцию отправки из этого приложения сообщения дефолтно на мой номер, то есть только EditText и Button. Ввела отправила. Вот и подбираюсь к загвоздке. Отправляется смс, сохраняется в БД, и я хочу сделать с помощью AsyncTask чтобы список сразу обновлялся. AsyncTask написал, но вот как сделать чтобы обновлялся simpleCursorAdapter не знаю. Уже второй день ломаю голову. Интернет облазил, но не нашел ответа на свой вопрос. Подскажите пожалуйста как такое можно сделать.