Урок 48. Используем SimpleAdapter.

Обсуждение уроков
Siemenstim
Сообщения: 9
Зарегистрирован: 16 апр 2013, 14:04

Re: Урок 48. Используем SimpleAdapter.

Сообщение Siemenstim » 16 мар 2016, 09:49

Доброго дня.
Есть ViewPager с фрагментом из двух TextView. В каждой TextView будет больше 100 страниц, на каждой около 1 предложения, текст зависит от номера страницы. Прошу сильно не бить, если все это легко, но я немного запутался,и прошу пару советов:
1. Текст лучше закатать в файл string.xml? Или правильней отдельный файл закинуть?
2. Адаптер SimpleAdapter лучше использовать для вывода в две TextView или какой другой?
3. И самое главное : из адаптера данные куда передавать? в listView?

Заранее спасибо.

arada
Сообщения: 2
Зарегистрирован: 12 фев 2016, 10:15

Re: Урок 48. Используем SimpleAdapter.

Сообщение arada » 19 июл 2016, 18:41

AABL писал(а):Жаловался на "drawable". Ошибка "no resource found that matches the given name (at 'src' with value '@drawable/ic_launcher')" в файле item.xml. И в mainactivity.java схожая ошибка на дроубл.
Погуглил и заменил в двух местах слово "drawable" на "mipmap" и всё заработало.
Насколько я понял, пример или работает только на eclipse, или для более старой версии Android Studio.
А что такое mipmap? Есть ли разница от drawable?
http://developer.alexanderklimov.ru/and ... php#mipmap
https://programmium.wordpress.com/2014/ ... droid-4-3/

Насколько я понял, начиная с Android 4.3 разработчикам рекомендуется не мучать систему, заставляя ресайзить одну иконку, а самостоятельно подготовить изображения разных размеров под разные экраны, а система уже выберет подходящее.

Хорошо бы обновить в уроках. Сам наткнулся на это в 54-м и, честно говоря, поначалу впал в ступор.

WKBAPKA
Сообщения: 32
Зарегистрирован: 03 янв 2014, 14:28

Re: Урок 48. Используем SimpleAdapter.

Сообщение WKBAPKA » 25 сен 2017, 11:58

Vlady писал(а):А как понять на какие элементы пользователь проставил крыжики?
можно, только это наверное через пень колоду.
для чек бокса регистрируем событие onClick
в нем получаем View (сам чекбокс), читаем его текст и значение isChecked и сохраняем в массив.

WKBAPKA
Сообщения: 32
Зарегистрирован: 03 янв 2014, 14:28

Re: Урок 48. Используем SimpleAdapter.

Сообщение WKBAPKA » 25 сен 2017, 11:59

А почему не срабатывает событие onItemClickListener()?

WKBAPKA
Сообщения: 32
Зарегистрирован: 03 янв 2014, 14:28

Re: Урок 48. Используем SimpleAdapter.

Сообщение WKBAPKA » 25 сен 2017, 13:59

Алилуя...
нашел ,почему не срабатывает onItemClickListener()
если есть чек бокс нужно у него сбросить следующие свойства:
android:focusable="false"
android:focusableInTouchMode="false"

нашел инфу у Климова, часа два угробил пытаясь понять, почему не срабатывает клик
ну а дальше имея ссылку на сам адаптер, текущую позицию обработать клик дело техники

только я так и не понял, в чем прикол самого чекбокса в таком исполнении :)

vadsan
Сообщения: 2
Зарегистрирован: 08 окт 2018, 09:43

Re: Урок 48. Используем SimpleAdapter.

Сообщение vadsan » 09 окт 2018, 17:22

Изображение

Код: Выделить всё

public class MainActivity extends AppCompatActivity {

    // имена аттрибутов для мап
    final String ATTRIBUTE_NAME_TEXT = "text";
    final String ATTRIBUTE_NAME_TEXT1 = "text1";
    final String ATTRIBUTE_NAME_CHECKED = "checked";
    final String ATTRIBUTE_NAME_IMAGE = "image";

    ListView listView;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // массивы данных
        String[] texts = {"sometext 1", "sometext 2", "sometext 3", "sometext 4", "sometext 5" };
        boolean[] checked = {true, false, true, false, false};
        int[] img = {R.drawable.ic_launcher_foreground, R.drawable.ic_grade_black_48dp, R.drawable.ic_group_work_black_48dp, R.drawable.ic_help_black_48dp, R.drawable.ic_launcher_background};

        String[] textChecked = {"Один", "Два", "Три", "Четыре", "Пять" };

        // упаковка данных в понятную для адаптера структуру
        ArrayList<Map<String, Object>> data = new ArrayList<Map<String, Object>> (texts.length);
        Map<String, Object> m;

        for (int i = 0; i < texts.length; i++) {
            m = new HashMap<String, Object>();
            m.put(ATTRIBUTE_NAME_TEXT, texts[i]);
            m.put(ATTRIBUTE_NAME_TEXT1, textChecked[i]);
            m.put(ATTRIBUTE_NAME_CHECKED, checked[i]);
            m.put(ATTRIBUTE_NAME_IMAGE, img[i]);
            data.add(m);
        }

        // массив имен аттрибутов, из которых будут читаться данные
        String[] from = {ATTRIBUTE_NAME_TEXT, ATTRIBUTE_NAME_CHECKED, ATTRIBUTE_NAME_IMAGE, ATTRIBUTE_NAME_TEXT1};
        // массив ID view компоненков, в которые будут вставляться данные
        int[] to = {R.id.tvText, R.id.cbChecked, R.id.ivImg, R.id.cbChecked};

        // создаем адаптер
        SimpleAdapter simpleAdapter = new SimpleAdapter(this, data, R.layout.item, from, to);

        // определяем список и присваиваем ему адаптер
        listView = (ListView) findViewById(R.id.lvSimple);
        listView.setAdapter(simpleAdapter);
    }
}

Ответить