Подписаться на получение новых статей на почту:

Отображение сетей в кликабельном списке — Listview. Шаг № 87

Всем привет. Настроив в прошлой записи работу контроллера stm32 в паре с wi-fi модулем, для передачи данных, вернемся к Android — приложению. Вспомним, что мы остановились на том, что добавили функцию по сканированию сетей. Сегодня мы научимся записывать ssid найденных сетей в список ListView, для дальнейшего выбора необходимой и приема данных с управляющего устройства на микроконтроллере.

Познакомимся со списками и разберем каким образом передавать в них информацию, а также организуем обработку событий по клику определенного пункта. Итак компонент отвечающий за список это – ListView. Добавляем его в наше приложение SmartHouse. Сначала мы добавим на форму сам компонент, а затем заполним его элементами, такими как Item и Sub Item. Ниже рисунок.

Listview

Переходим в класс активности и пишем в методе onCreate () код (исходник выложен ниже):

//Получаем экземпляр элемента
ListViewlv = findViewById(R.id.list);

Для работы со списком, именно для его наполнения необходим адаптер. Для стандартного списка используется конструкция
new ArrayAdapter (Context context, int textViewResourceId, String[] objects). //Используем ниже
, где

  • context — текущий контекст;
  • textViewResourceId — идентификатор ресурса с разметкой для каждой строки. Можно использовать системную разметку с идентификатором android.R.layout.simple_list_item_1 или создать собственную разметку;
  • objects — массив строк.

Для просмотра ресурса с разметкой мы можем использовать комбинацию Ctrl+B, смотрим его расположение. Он из себя представляет компонент TextView с набором атрибутов, где настроены цвета, фон, высота пунктов и другие параметры. Рис. ниже.Listview_simpleСюда же мы можем добавить свой ресурс с необходимыми атрибутами. На данном этапе воспользуемся стандартным. Также в метод добавим прослушивание событий элемента ListView, который мы используем на реагирование при нажатии одного из элемента списка. В данном примере мы передаем имя сети из списка в сплывающее сообщение.

lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {//Зарегистрируем обратный вызов для вызова, когда элемент в этом AdapterView был нажат.
      @Override    public void onItemClick(AdapterView<?> parent, View itemClicked, int position,long id) {
/*Метод обратного вызова, который нужно вызвать, когда элемент в этом адаптере был нажат.
где, AdapterView - где произошел щелчок, itemClicked - вид в клиенте AdapterView, position
- позиция вида в адаптере, id - идентификатор строки элемента, который был нажат*/
Toast.makeText(getApplicationContext(), ((TextView) itemClicked).getText(),Toast.LENGTH_SHORT).show();
}});
 class ScanReceiver extends BroadcastReceiver {
      private String LOG_TAG = " ";
      @Override    public void onReceive(Context context, Intent intent) {
           WifiManager wifi = (WifiManager) context.getSystemService(WIFI_SERVICE);
           List<ScanResult> wifiScanList = wifi.getScanResults();
           wifis = new String[wifiScanList.size()];
           i=0;
           for (Object scanResult : wifiScanList){//Запускаем цикл по кол-ву элементов в массиве данных. В каждой итерации создаем View-элемент item.
               Log.d(LOG_TAG,scanResult.toString());
               wifis[i] = ((wifiScanList.get(i)).SSID);
               i++; }
     lv.setAdapter(new ArrayAdapter<String>(getApplicationContext(),android.R.layout.simple_list_item_1,wifis));//Метод setAdapter() связывает подготовленный список с адаптером.
     context.unregisterReceiver(this);
     Toast.makeText(context, "number of networks: "+wifiScanList.size(), Toast.LENGTH_LONG).show();//Количество сетей
}}

На рисунке, ниже, результат работы. Cеть обведенная ниже это наш wi-fi модуль esp8266, который мы в прошлой статье перевели в режим TCP-сервера, используя микроконтроллер stm32 and AT-комманды.
ListView_SmartHouse
Исходник:

Вывод в ListView SSID сети. ( Скачали: 18 чел. ) 


Все друзья разобравшись со списком и способом передачи наименований сетей, следующим шагом будет подключение к выбранной сети и прем/передача информации. На этом сегодня и остановимся. Всем пока.

Просмотрено 830 раз.

Я на Google+

Добавить комментарий

Ваш e-mail не будет опубликован.

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Subscribe without commenting