Урок 54. Кастомизация списка. Создаем свой адаптер
Re: Урок 54. Кастомизация списка. Создаем свой адаптер
http://activity-android.blogspot.com/20 ... apter.html вот я здесь описывал как переопределяется SimpleCursorAdapter
R.id.team
Политика на форуме запрещена
Политика на форуме запрещена
Re: Урок 54. Кастомизация списка. Создаем свой адаптер
как вместо этого заполнения брать данные из массивов в strings.xml?
Код: Выделить всё
void fillData() {
for (int i = 1; i <= 20; i++) {
products.add(new Product("Product " + i, i * 1000,
R.drawable.ic_launcher, false));
}
}
Re: Урок 54. Кастомизация списка. Создаем свой адаптер
getString(R.string.my_name)
R.id.team
Политика на форуме запрещена
Политика на форуме запрещена
Re: Урок 54. Кастомизация списка. Создаем свой адаптер
Вот есть массив из строк
как правильно вставить этот массив, чтоб он отображался в кастомном списке:
Код: Выделить всё
<string-array name="product">
<item>1</item>
<item>2</item>
<item>3</item>
<item>4</item>
<item>5</item>
</string-array>
Код: Выделить всё
void fillData() {
products.add(new Product("Product ", 1000, R.drawable.ic_launcher, false));
}
Re: Урок 54. Кастомизация списка. Создаем свой адаптер
Передаёшь R.arrays.product параметров в констрктор ArrayAdapter - есть соответствующий конструктор
Переобределяешь метод getView() чтобы настраивал список как тебе надо.
Переобределяешь метод getView() чтобы настраивал список как тебе надо.
Re: Урок 54. Кастомизация списка. Создаем свой адаптер
Огромное спасибо! Это то что нужно было:) Респект и уважуха, как говорится)KamiSempai писал(а):Нужно правильно переопределить метод getItemIdКод: Выделить всё
public long getItemId(int position) { return (long) Order__id[position]; }
Наверное вы правы ... со временем может и перепишу(когда времени будет больше) ... облегчу кодKamiSempai писал(а):PS: Так как у Вас данные изначально сидят в курсоре, я бы посоветовал использовать SimpleCursorAdapter.
-
- Сообщения: 103
- Зарегистрирован: 10 сен 2012, 11:58
Re: Урок 54. Кастомизация списка. Создаем свой адаптер
Здравствуйте.
Вроде разобрался с адаптерами и смог сделать кастомный. Но, вопрос использования полученных знаний упирается в отсутствие практики программирования, особенно на Андроид с его Intent. Сориентируйте пожалуйста по следующему вопросу. Есть две активити MainActivity и ChildActivity.
MainActivity - список товаров, массив, состоящий из позиций {A, B, C, D, ...}
ChildActivity - список продуктов, тоже массив, состоящий из элементов
{A1, A2, A3, ...}
{B1, B2, B3, ...} и т.д.
При удалении A, должен удаляться и весь {A1, A2, A3, ...} , также и с остальными позициями.
Как использовать Intent, чтобы при удалении A в MainActivity удалялся и весь {A1, A2, A3, ...}, без загрузки ChildActivity.
При удалении А, значение 0 в массиве передается В, поэтому при обращении к В отображается {A1, A2, A3, ...}. Как решить этот вопрос, чтобы после того как B получил значение 0, {B1, B2, B3, ...} также присваивался 0 в ChildActivity?
Если можно, дайте пожалуйста развернутый ответ.
Спасибо.
Вроде разобрался с адаптерами и смог сделать кастомный. Но, вопрос использования полученных знаний упирается в отсутствие практики программирования, особенно на Андроид с его Intent. Сориентируйте пожалуйста по следующему вопросу. Есть две активити MainActivity и ChildActivity.
MainActivity - список товаров, массив, состоящий из позиций {A, B, C, D, ...}
ChildActivity - список продуктов, тоже массив, состоящий из элементов
{A1, A2, A3, ...}
{B1, B2, B3, ...} и т.д.
При удалении A, должен удаляться и весь {A1, A2, A3, ...} , также и с остальными позициями.
Как использовать Intent, чтобы при удалении A в MainActivity удалялся и весь {A1, A2, A3, ...}, без загрузки ChildActivity.
При удалении А, значение 0 в массиве передается В, поэтому при обращении к В отображается {A1, A2, A3, ...}. Как решить этот вопрос, чтобы после того как B получил значение 0, {B1, B2, B3, ...} также присваивался 0 в ChildActivity?
Если можно, дайте пожалуйста развернутый ответ.
Спасибо.
Re: Урок 54. Кастомизация списка. Создаем свой адаптер
Исходные данные храни в MainActivity, в ChildActivity передавай то что нужно (передавать с Intent'ом). Напиши свой класс который будет хранить данные твои, например:
В MainActivity создай List<Data> data = ArrayList<Data>(); В лист будешь грузить только parent, а в ChildActivity будешь передавать только объект класса Data вытянутый из списка. В ChildActivity если удаляешь что то то передавай в MainActivity (так как ChildActivity был вызван методом startIntentForResult), например передавай id удаляемого объекта из списка data.
Имхо, лучше юзать для таких дел SimpleCursorAdapter, там всё через курсор делается.
Код: Выделить всё
public class Data implements Parcelable {
private String parent;
private String[] child;
//и т.д.
}
Имхо, лучше юзать для таких дел SimpleCursorAdapter, там всё через курсор делается.
R.id.team
Политика на форуме запрещена
Политика на форуме запрещена
Re: Урок 54. Кастомизация списка. Создаем свой адаптер
Подскажите, пожалуйста, по теме следующее..
При использовании SimpleCursorAdapter ему нужно подать cursor. А у меня есть результат запроса не курсор, а ResultSet:
Как быть, а то я не знаю куда смотреть, это ж совсем разные классы..
И еще.. если я хочу сделать ListView двухстрочный и галочкой справа для отмечания нужных позиций - понятно, что у меня будет два поля в ResultSet, а третье поле - с нулем для чекбокса - тоже нужно? при отмечании позиций в списке - в это поле будет автоматом заноситься 1 или нужно писать обработку?
При использовании SimpleCursorAdapter ему нужно подать cursor. А у меня есть результат запроса не курсор, а ResultSet:
Код: Выделить всё
ResultSet rs = st.executeQuery(queryString);
И еще.. если я хочу сделать ListView двухстрочный и галочкой справа для отмечания нужных позиций - понятно, что у меня будет два поля в ResultSet, а третье поле - с нулем для чекбокса - тоже нужно? при отмечании позиций в списке - в это поле будет автоматом заноситься 1 или нужно писать обработку?
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. Кастомизация списка. Создаем свой адаптер
Думаю что придётся писать всё вручную и использовть практически любой из адаптеров для ListView.
R.id.team
Политика на форуме запрещена
Политика на форуме запрещена
Re: Урок 54. Кастомизация списка. Создаем свой адаптер
Что именно писать вручную?
А данные нельзя перегнать из одного резалтсета в другой...?
А данные нельзя перегнать из одного резалтсета в другой...?
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. Кастомизация списка. Создаем свой адаптер
Вам данные нужно онлайн передавать? Если нет то заполните ArrayList из полученных данных и передайте его адаптеру. При посылке данных на сервер конвертируйте обратно в тот вид который нужен для отправки.
R.id.team
Политика на форуме запрещена
Политика на форуме запрещена
Re: Урок 54. Кастомизация списка. Создаем свой адаптер
мне нужно отмеченные пользователем в listView строчки записать в локальную бд (sqllite)
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. Кастомизация списка. Создаем свой адаптер
Тю ну раз в локальную тогда конечно simplecursoradapter полюбому. Или с ним проблемы какие то? Потому что вы так конкретно и не озвучили их.
R.id.team
Политика на форуме запрещена
Политика на форуме запрещена
Re: Урок 54. Кастомизация списка. Создаем свой адаптер
да я не знаю как из resultset создать cursor, в том-то и вопрос. Не построчно же добавлять..? Строк может быть мнооого. В таблицу sqlite тоже сразу не хочу, т.к. юзер будет выбирать строчки, а их будет несколько штук всего, их и положу в таблицу.
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. Кастомизация списка. Создаем свой адаптер
вы не курсор должны заполняеть, а примерно вот так всё должно выглядить:
Код: Выделить всё
DBHelper db = new DBHelper(this, databaseName, null, version);
while(rs.next()) {
db.addData(new Data(rs.getString(0), rs.getString(1)));
}
//Data это как бы класс-контейнер:
public class Data {
private String str1, str2;
public Data(String s1, String s2) {
str1 = s1;
str2 = s2;
}
}
//В DBHelper'e метод дабавляем в бд
public void addData(Data data) {
SQLiteDatabase db = this.getWritableDatabase();
ContentValues cv = new ContentValues();
cv.put("str1", data.getStr1());
cv.put("str2", data.getStr2());
db.insert(table_name, null, cv);
db.close();
}
R.id.team
Политика на форуме запрещена
Политика на форуме запрещена
Re: Урок 54. Кастомизация списка. Создаем свой адаптер
еще раз, или я так объясняю запутанно, или мы просто друг друга не понимаем. Я хочу данные с удаленной БД (которые я уже получила в resultset) отобразить в ListView. А уже ЗАТЕМ отмеченные загрузить в SQLiteDatabase, мне не нужно все туда запихивать...
Но это уже второй вопрос.
А первый - мне показать надо resultset на экране пользователю, причем с чекбоксами.
я тут добавляю лишний столбик с нулямии в расчете на то, что когда юзер будет щелкать по строчкам в листвью эти checkb будут заполняться единичками.
я думала, раз у него тоже есть эти методы getString, то может как-то переопределить SimpleCursorAdapter как у вас тут описано?
http://activity-android.blogspot.com/20 ... apter.html
только можно ли ему на вход вместо курсора резалтсет забабахать?
Но это уже второй вопрос.
А первый - мне показать надо resultset на экране пользователю, причем с чекбоксами.
Код: Выделить всё
String queryString = "select n as name, a as addr from sometable, 0 as checkb";
ResultSet rs = st.executeQuery(queryString);
я думала, раз у него тоже есть эти методы getString, то может как-то переопределить SimpleCursorAdapter как у вас тут описано?
http://activity-android.blogspot.com/20 ... apter.html
только можно ли ему на вход вместо курсора резалтсет забабахать?
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. Кастомизация списка. Создаем свой адаптер
так тогда в чём проблема передать ResultSet в адаптер и там уже его разбирайте в getView и заполняйте как захотите (только тогда уже использовать придётся не SimpleCursorAdapter а другой обычный).
R.id.team
Политика на форуме запрещена
Политика на форуме запрещена
Re: Урок 54. Кастомизация списка. Создаем свой адаптер
а как его передать? а так можно?rezak90 писал(а):так тогда в чём проблема передать ResultSet в адаптер и там уже его разбирайте в getView и заполняйте как захотите (только тогда уже использовать придётся не SimpleCursorAdapter а другой обычный).
в какой обычный? cursoradapter? а почему не 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: Урок 54. Кастомизация списка. Создаем свой адаптер
BaseAdapter or ArrayAdapter, example:
Код: Выделить всё
public class ContactListCursorAdapter extends BaseAdapter {
private Context mContext;
private ResultSet mItems;
public ContactListCursorAdapter(Context context, ResultSet items) {
mContext = context;
mItems = items;
}
public int getCount() {
return mItems .getFetchSize();
}
public Object getItem(int position) {
return mItems .getObject(position);
}
public long getItemId(int position) {
return position;
}
public View getView(int position, View convertView, ViewGroup parent) {
View view = convertView;
if (view == null) {
LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(mContext.LAYOUT_INFLATER_SERVICE);
view = inflater.inflate(layout, parent, false); //layout для строки
}
TextView tv = (TextView)view.findViewById(R.id.text); //то что в вашой layout которую используем выше
//... определяем все нужные вьюшки
Object obj = getItem(position); //вот здесь посмотри в дебагере что будет в объекте, если будет те данные что нужно вставлять то хорошо, если нет то плохо =) и врятли получится
}
}
R.id.team
Политика на форуме запрещена
Политика на форуме запрещена