Приветствую!
Статья является продолжением начатой мной части 1 и части 2.
Предостережение
Важно: данный урок не является профессиональным. Автор урока не является специалистом в программировании для платформы Android. Я заранее приношу свои извинения, за неоправданные ожидания. Так как предыдущий урок получил больше положительных отзывов, я решил продолжить.
О чем пойдеь речь
В первой части мной упоминалось, что приложение будет иметь возможность авторизироваться и отображать данные сервера. Реализуем:
- Авторизация
- Листинг данных получаемых с сервера
Для меня авторизация это:
- Запрос к БД для проверки наличия пользователя
- Обработка ответа и старт сессии при 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