Developer от Бога

DV

пятница, 7 июля 2017 г.

Android. ListActivity


Списки в Android бывают простыми (в виде текста или картинок) и более сложные - комбинированные. В этом примере будет рассмотрен сложный список элементов (комбинация текст + изображение, которое использовалось в приложении по выбору эффекта для фотографии ). Для этого нужны два класса : BaseAdapter , который заполняет список данными, и ListActivity который этот список отображает. Любое активити, имеет один layout в момент времени, и его выводит на активное окно. Так как в примере сложный список ( содержит в одной ячейке изображение и текст ) то для такого списка понадобится отдельный layout файл в где будут созданы все нужные элементы (изображения, кнопки, текст и т.д) которые нужно отобразить в одной ячейке. Читать этот layout, и загружать в BaseAdapter будет важный класс - LayoutInflater. BaseAdapter заполняет layout ячейку (в примере это - элементы ImageView, TextView) нужными данными , и возвращает ListActivity, который повторяет эту операцию до вывода всего списка. LayoutInflater может использоваться не только для оформления элемента списка, но также для создания более сложных диалоговых окон чем обычно с одной или двумя кнопками, это такой контейнер который способен перемещать в нужное место для вывода layout файлы.


  1. public class FilterManager extends ListActivity {
  2. private FilterManagerAdapter adapter;
  3. @Override
  4. public void onCreate(Bundle savedInstanceState) {
  5. super.onCreate(savedInstanceState);
  6. setContentView(R.layout.filter_manager_activity);
  7. adapter = new FilterManagerAdapter(this);
  8. setListAdapter(adapter);
  9. }
  10. public void onListItemClick(
  11. ListView parent, View v, int position, long id) {
  12. }
  13. } }


В классе BaseAdapter эть несколько методов которые вызываются при каждом "рисовании" элемента списка : public int getCount() { return style.length; } - сообщает сколько раз нужно повторить итерацию ( в этом случае ровно столько сколько элементов в массиве - количество фильтров). А getView(int position, View convertView, ViewGroup parent) подставляет нужные изображения и текст и возвращает уже заполненный элемент списка в активность на котором все отображается. 



  1. public class FilterManager extends ListActivity {
  2. private FilterManagerAdapter adapter;
  3. @Override
  4. public void onCreate(Bundle savedInstanceState) {
  5. super.onCreate(savedInstanceState);
  6. setContentView(R.layout.filter_manager_activity);
  7. adapter = new FilterManagerAdapter(this);
  8. setListAdapter(adapter);
  9. }
  10. public void onListItemClick(
  11. ListView parent, View v, int position, long id) {
  12. }
  13. } }


В ListActivity важен метод public void onListItemClick(), в нем сообщается о нажатии на элемент списка

Комментариев нет:

Отправить комментарий