13 January 2013

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

Development for Android
Tutorial
Приветствую!

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


Конец.
Tags:ListView androidобмен данными между Activityandroid json парсинг
Hubs: Development for Android
-3
9.1k 116
Comments 6