Google Android - это несложно

Добро пожаловать на форум сайта startandroid.ru
Текущее время: 21 авг 2017, 14:59

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 82 ]  На страницу 1, 2, 3, 4, 5  След.
Автор Сообщение
 Заголовок сообщения: Урок 48. Используем SimpleAdapter.
СообщениеДобавлено: 16 янв 2012, 07:30 
Администратор
Аватар пользователя

Зарегистрирован: 07 янв 2012, 11:32
Сообщений: 1344
Благодарил (а): 0 раз.
Поблагодарили: 72 раз.
В этом уроке:

- рассмотрим пример использования SimpleAdapter

Click here to read this article!

_________________
Добро пожаловать на форум сайта StartAndroid
ИзображениеИзображение


Последний раз редактировалось damager82 02 май 2017, 23:35, всего редактировалось 10 раз(а).

Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 19 янв 2012, 12:36 

Зарегистрирован: 11 янв 2012, 10:59
Сообщений: 34
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Ваш пример мне очень подходит, вот только как его модифицировать?
Подставил вместо чекбокса, радиокнопку
срабатывает нажатие на всех кнопках, а отмены нет.
В 43-м уроке описан одиночный и множественный выбор, но там не могу вставить еще один текст.
Вообщем мне надо:
радиокнопка и два текста (один крупным шрифтом, другой мелким)


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 20 янв 2012, 15:03 
Администратор
Аватар пользователя

Зарегистрирован: 07 янв 2012, 11:32
Сообщений: 1344
Благодарил (а): 0 раз.
Поблагодарили: 72 раз.
Oleg_SS писал(а):
Ваш пример мне очень подходит, вот только как его модифицировать?
Подставил вместо чекбокса, радиокнопку
срабатывает нажатие на всех кнопках, а отмены нет.
В 43-м уроке описан одиночный и множественный выбор, но там не могу вставить еще один текст.
Вообщем мне надо:
радиокнопка и два текста (один крупным шрифтом, другой мелким)



Тут все не просто. Это надо руками обрабатывать. Без кастомизации адаптера или создания своего комопнента, думаю не обойтись. Попробую потом на эту тему урок наваять.

_________________
Добро пожаловать на форум сайта StartAndroid
ИзображениеИзображение


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 48. Используем SimpleAdapter.
СообщениеДобавлено: 04 мар 2012, 07:42 
Аватар пользователя

Зарегистрирован: 04 мар 2012, 07:41
Сообщений: 7
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
А как понять на какие элементы пользователь проставил крыжики?


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 48. Используем SimpleAdapter.
СообщениеДобавлено: 05 мар 2012, 10:24 
Администратор
Аватар пользователя

Зарегистрирован: 07 янв 2012, 11:32
Сообщений: 1344
Благодарил (а): 0 раз.
Поблагодарили: 72 раз.
Vlady писал(а):
А как понять на какие элементы пользователь проставил крыжики?

В этой реализации, думаю что никак. Надо кастом-адаптер использовать. В уроке 54 можно глянуть.

_________________
Добро пожаловать на форум сайта StartAndroid
ИзображениеИзображение


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 48. Используем SimpleAdapter.
СообщениеДобавлено: 05 мар 2012, 11:22 
Аватар пользователя

Зарегистрирован: 04 мар 2012, 07:41
Сообщений: 7
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Ага, уже понял и написал кастомный адаптер. Всё отлично работает.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 48. Используем SimpleAdapter.
СообщениеДобавлено: 15 апр 2012, 09:41 

Зарегистрирован: 26 мар 2012, 12:51
Сообщений: 12
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
такой вопрос - есть несколько картинок (как вариация урока) и несколько разных текстов; item для ячейки списка состоит из картинки и 2-х текстовок
делаю так -
public class CatsList extends Activity {

final String ATTRIBUTE_NAME_TEXT = "text";
final String ATTRIBUTE_NAME_VALUE = "value";
final String ATTRIBUTE_NAME_IMAGE = "image";
ListView lv;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.catslist);

---понимаю что неправильно задаю массивы, но другого пути не знаю-----

int [] images = {R.drawable.harakter,R.drawable.history,R.drawable.pitanie};
int [] values = {R.string.history, R.string.haracter, R.string.pitanie};
int [] values1 = {R.string.start, R.string.osob_harac, R.string.osob_pit};

ArrayList<Map<String, Object>> data = new ArrayList<Map<String, Object>>();
Map<String, Object> m;
m = new HashMap<String, Object>();
for(int i=0; i<=images.length; i++){
m.put(ATTRIBUTE_NAME_IMAGE, images[i]);
m.put(ATTRIBUTE_NAME_TEXT, values[]);
m.put(ATTRIBUTE_NAME_VALUE, values1[]);
data.add(m);
}

String [] from = {ATTRIBUTE_NAME_IMAGE,ATTRIBUTE_NAME_TEXT,ATTRIBUTE_NAME_VALUE};
int to[] = {R.id.imageView1, R.id.textV1, R.id.textV2};

SimpleAdapter sAdapter = new SimpleAdapter(this, data, R.layout.itemcat, from, to);

lv = (ListView)findViewById(R.id.listView1);
lv.setAdapter(sAdapter);
}
}
активити даже не запускается! а мне надо чтоб в каждую отдельную ячейку списка заходил разный набор imageview, string, string. Что посоветуете


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 48. Используем SimpleAdapter.
СообщениеДобавлено: 16 апр 2012, 11:24 
Администратор
Аватар пользователя

Зарегистрирован: 07 янв 2012, 11:32
Сообщений: 1344
Благодарил (а): 0 раз.
Поблагодарили: 72 раз.
irukanji писал(а):
активити даже не запускается! а мне надо чтоб в каждую отдельную ячейку списка заходил разный набор imageview, string, string. Что посоветуете


В строке:
Код: [ Загрузить ] [ Скрыть ]
Using Java Syntax Highlighting
  1. for(int i=0; i<=images.length; i++){
ошибка.
Вместо <= надо просто <. Иначе за границы массива выходите.

В этих строках
Код: [ Загрузить ] [ Скрыть ]
Using Java Syntax Highlighting
  1. m.put(ATTRIBUTE_NAME_TEXT, values[]);
  2. m.put(ATTRIBUTE_NAME_VALUE, values1[]);
не указан индекс элемента массива в квадратных скобках.

Массивы values и values1 у вас содержат не тексты, а их ID. И в списке у вас по умолчанию получатся тоже не тексты, а цифры.
Используйте getResources().getString(R.string.history), чтобы получить текст. Либо надо кастомизировать адаптер, чтоб вместо ID текст выводил.

_________________
Добро пожаловать на форум сайта StartAndroid
ИзображениеИзображение


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 48. Используем SimpleAdapter.
СообщениеДобавлено: 18 апр 2012, 13:54 

Зарегистрирован: 26 мар 2012, 12:51
Сообщений: 12
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Спасибо за ответы...Но так и не могу вьехать как вогнать в каждую отдельную ячейку ListView такой набор - ImageView, TextView, TextView, причем для каждой ячейки совершенно разный набор этих элементов...Кто подскажет?


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 48. Используем SimpleAdapter.
СообщениеДобавлено: 19 апр 2012, 09:21 
Администратор
Аватар пользователя

Зарегистрирован: 07 янв 2012, 11:32
Сообщений: 1344
Благодарил (а): 0 раз.
Поблагодарили: 72 раз.
irukanji писал(а):
Спасибо за ответы...Но так и не могу вьехать как вогнать в каждую отдельную ячейку ListView такой набор - ImageView, TextView, TextView, причем для каждой ячейки совершенно разный набор этих элементов...Кто подскажет?


А разве текущий код не достигает этой цели? Он одно и то же в каждом пункте списка показывает?

_________________
Добро пожаловать на форум сайта StartAndroid
ИзображениеИзображение


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 48. Используем SimpleAdapter.
СообщениеДобавлено: 20 апр 2012, 17:25 

Зарегистрирован: 26 мар 2012, 12:51
Сообщений: 12
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Именно так! Но уже поискал и нашел решение через кастомизацию baseadapter и его метода getview, но так и не понял почему так происходит, вроде по логике все верно делал?


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 48. Используем SimpleAdapter.
СообщениеДобавлено: 23 апр 2012, 09:55 
Администратор
Аватар пользователя

Зарегистрирован: 07 янв 2012, 11:32
Сообщений: 1344
Благодарил (а): 0 раз.
Поблагодарили: 72 раз.
irukanji писал(а):
так и не понял почему так происходит, вроде по логике все верно делал?

Я скопировал ваш код себе, пофиксил его, как уже описывал выше и все работало как надо.

_________________
Добро пожаловать на форум сайта StartAndroid
ИзображениеИзображение


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 48. Используем SimpleAdapter.
СообщениеДобавлено: 04 авг 2012, 13:35 

Зарегистрирован: 04 авг 2012, 13:29
Сообщений: 14
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Люди подскажите можно ли этом примере обработать нажание ImageView , что б при нажатии на каждую ImageView получить еще ID элемента списка?


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 48. Используем SimpleAdapter.
СообщениеДобавлено: 04 авг 2012, 13:57 
Аватар пользователя

Зарегистрирован: 26 июн 2012, 13:22
Сообщений: 3422
Откуда: UA
Благодарил (а): 11 раз.
Поблагодарили: 244 раз.
Eserchik переопределяй SimpleAdapter и там уже в getView определяешь свои компоненты и соответственно вешай онклик на ImageView.

_________________
R.id.team
Политика на форуме запрещена


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 48. Используем SimpleAdapter.
СообщениеДобавлено: 04 авг 2012, 22:58 

Зарегистрирован: 04 авг 2012, 13:29
Сообщений: 14
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Не могли бы поподробнее обьяснить?


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 48. Используем SimpleAdapter.
СообщениеДобавлено: 04 авг 2012, 23:07 
Аватар пользователя

Зарегистрирован: 26 июн 2012, 13:22
Сообщений: 3422
Откуда: UA
Благодарил (а): 11 раз.
Поблагодарили: 244 раз.
Вот тебе пример:
Код: [ Загрузить ] [ Скрыть ]
Using Java Syntax Highlighting
  1. public class Adapter extends SimpleAdapter{
  2.     HashMap<String, String> map = new HashMap<String, String>();
  3.     public Adapter(Context context, List<? extends Map<String, String>> data,
  4.             int resource, String[] from, int[] to) {
  5.         super(context, data, resource, from, to);
  6.  
  7.     }
  8. @Override
  9.     public View getView(int position, View convertView, ViewGroup parent){
  10.         View row = super.getView(position, convertView, parent);
  11.         if (row == null) {
  12.             LayoutInflater mInflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
  13.             row = mInflater.inflate(R.layout.mylistlayout, parent, false);
  14.             }
  15.         row.setBackgroundColor(0xFF0000FF);
  16.        TextView rw1 = (TextView)findViewById(R.id.row1);
  17.       // TextView rw2 = (TextView)findViewById(R.id.row2);
  18.        rw1.setText(map.get(position));
  19.        return row;
  20.     }
  21.  
  22. }
  23.  

З.Ы. если это тебе сложно, то будем разжевывать...

_________________
R.id.team
Политика на форуме запрещена


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 48. Используем SimpleAdapter.
СообщениеДобавлено: 05 авг 2012, 20:13 

Зарегистрирован: 16 июл 2012, 07:47
Сообщений: 235
Благодарил (а): 0 раз.
Поблагодарили: 25 раз.
rezak90 - ничего из того, что ты написал в коде в предыдущем сообщении, делать не надо - всё сделает базовый класс, ну, кроме, setBackgroundColor().
Нужно установить обработчик.
Но rw1.setOnClickListener() работатать не будет - row существует только для отрисовки строки ListView (или ячейки GridView)
Что есть взамен у андроида - не знаю.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 48. Используем SimpleAdapter.
СообщениеДобавлено: 19 сен 2012, 13:14 

Зарегистрирован: 19 сен 2012, 13:05
Сообщений: 10
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Код: [ Загрузить ] [ Скрыть ]
Using Java Syntax Highlighting
  1. Map<String, Object> m;
  2.     for (int i = 0; i < texts.length; i++) {
  3.       m = new HashMap<String, Object>();
  4.       m.put(ATTRIBUTE_NAME_TEXT, texts[i]);
  5.       m.put(ATTRIBUTE_NAME_CHECKED, checked[i]);
  6.       m.put(ATTRIBUTE_NAME_IMAGE, img);
  7.       data.add(m);
  8.     }
  9.  

Для чего мы объявляем переменную класса Map и сразу назначаем ей ссылку на новый экземпляр класса HashMap
Ведь можно сделать и...
Код: [ Загрузить ] [ Скрыть ]
Using Java Syntax Highlighting
  1.                 // Map<String, Object> m;
  2.                 for (int i = 0; i < texts.length; i++)
  3.                 {
  4.                         HashMap<String, Object> m = new HashMap<String, Object>();
  5.                         m.put(ATTRIBUTE_NAME_TEXT, texts[i]);
  6.                         m.put(ATTRIBUTE_NAME_CHECKED, checked[i]);
  7.                         m.put(ATTRIBUTE_NAME_IMAGE, img);
  8.                         data.add(m);
  9.                 }
  10.  


Или я не прав поясните пожалуйста. Спасибо.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 48. Используем SimpleAdapter.
СообщениеДобавлено: 19 сен 2012, 14:44 

Зарегистрирован: 16 июл 2012, 07:47
Сообщений: 235
Благодарил (а): 0 раз.
Поблагодарили: 25 раз.
Barrya42 - всё правильно, можно сделать такое изменение кода.
Если бы можно было обойтись одной Map, объявление её вне цикла имело бы смысл.
А поскольку на каждом обороте цикла нужна новая HashMap - то и объявлять её лучше внутри цикла.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 48. Используем SimpleAdapter.
СообщениеДобавлено: 26 сен 2012, 21:41 

Зарегистрирован: 09 авг 2012, 20:58
Сообщений: 33
Откуда: Краснодар
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Всем привет! Скажите плиз...Что такое Адаптер , только как можно проще)) и для чего он нужен и пример его использования в программах ! Спасибо )


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 82 ]  На страницу 1, 2, 3, 4, 5  След.

Часовой пояс: UTC + 3 часа


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB