Статья является продолжением начатой мной части 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");
Конец.
ссылка на оригинал статьи http://habrahabr.ru/post/165641/
Добавить комментарий