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

от автора

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

Статья является продолжением начатой мной части 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"); 

Конец.

ссылка на оригинал статьи http://habrahabr.ru/post/165641/


Комментарии

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *