Программирование на Android для web разработчика или быстрый старт для самых маленьких. Часть 3

в 12:22, , рубрики: android, ListView android, метки:

Приветствую!

Статья является продолжением начатой мной части 1 и части 2.

Предостережение

Важно: данный урок не является профессиональным. Автор урока не является специалистом в программировании для платформы Android. Я заранее приношу свои извинения, за неоправданные ожидания. Так как предыдущий урок получил больше положительных отзывов, я решил продолжить.

О чем пойдеь речь

В первой части мной упоминалось, что приложение будет иметь возможность авторизироваться и отображать данные сервера. Реализуем:

  1. Авторизация
  2. Листинг данных получаемых с сервера


Для меня авторизация это:

  • Запрос к БД для проверки наличия пользователя
  • Обработка ответа и старт сессии при successfull

Именно так я поступаю в веб-приложении. Для клиент-сервера я решил обойтись имитацией сессии, используя локальное хранилище. Запросы к серверу, получение и обработка ответов уже рассматривалось в части 2, перейдем к хранению «сессии».

Хранение данных с помощью Preferences

SharedPreferences
Значения сохраняются в виде пары: имя, значение. После авторизации, мы сохраняем данные. При последующем открытие приложения, мы не будем нуждаться в повторной авторизации, достаточно прочитать записанные данные.

Запись:

        SharedPreferences sPref = getPreferences(MODE_PRIVATE);
	    Editor ed = sPref.edit();
	    ed.putString(LOGIN,login.getText().toString() );
	    ed.putString(PASSORD,password.getText().toString() );
	    ed.commit();

Чтение:

        SharedPreferences sPref = getPreferences(MODE_PRIVATE);
	    String login = sPref.getString(LOGIN, "");
	    String password = sPref.getString(PASSORD, "");

Чтение элементов в список (RoomsActivity)

Допустим мы успешно прошли авторизацию и нам открылся Activity, который получает список комнат чата в виде:

{"rooms":["room1","room2","room3","room4"]}

Сделаем это:

//  в объект наш ответ
JSONObject json = new JSONObject(result);
//  массив из объекта
JSONArray jsa = json.getJSONArray("rooms");
// находим список
ListView roomsLv = (ListView) findViewById(R.id.roomsLv);
// записываем в строковой массив json массив
String[] StringArray = new String[jsa.length()];
for(int i = 0; i < jsa.length(); i++) {
     StringArray[i] = jsa.getString(i);
}
// создаем адаптер
ArrayAdapter<String> adapter = new ArrayAdapter<String>(RoomsActivity.this,android.R.layout.simple_list_item_1, StringArray);

// назначаем списку адаптер
roomsLv.setAdapter(adapter);

После всего, получим работающий список. Теперь обработаем нажатие на элемент списка и перенесем в другой Activity (RoomSetActivity) название комнаты.

roomsLv.setOnItemClickListener(new OnItemClickListener() {
     public void onItemClick(AdapterView<?> parent, View view,int position, long id)
         {
		     Intent intent = new Intent(RoomsActivity.this, RoomSetActivity.class);
		     intent.putExtra("roomName", parent.getItemAtPosition(position).toString());
		     startActivity(intent);
        }
});

В RoomSetActivity прочитать название комнаты можно будет так:

String roomName =  getIntent().getExtras().getString("roomName");

Конец.

Автор: p4p

Источник

Поделиться

* - обязательные к заполнению поля