Уважаемые пользователи Голос!
Сайт доступен в режиме «чтение» до сентября 2020 года. Операции с токенами Golos, Cyber можно проводить, используя альтернативные клиенты или через эксплорер Cyberway. Подробности здесь: https://golos.io/@goloscore/operacii-s-tokenami-golos-cyber-1594822432061
С уважением, команда “Голос”
GOLOS
RU
EN
UA
vp-webdev
6 лет назад

Программируем под Android, заключительная часть.

Imgur
Эта статья закрывает цикл статей про получение и парсинг данных в json формате в ОС Android.

После метода doInBackground, используем метод onPostExecute, аргументом которого являются данные из первого метода.

 @Override
 protected void onPostExecute(String strJson) 

String strJson - автоматом передастся

//Создаём JSON объект из полученной строки.
JSONObject dJO = new JSONObject(strJson);
//Ищем значение по ключу
products = dJO.getJSONArray("products");

Потом обходим массив циклом

for (int i = 0; i < products.length(); i++) 
//Получаем JSON объект по ключу
JSONObject prodInfo = products.getJSONObject(i);

добавляем в ArrayList

//объявим их
final ArrayList prodList = new ArrayList();
final ArrayList prodId = new ArrayList();

//Добавим
prodList.add(prodInfo.getString("name"));
prodId.add(prodInfo.getString("id"));

Далее заполним ListView нашими данными.

Объявим ListView, добавленный в первой статье.

ListView lw = (ListView) findViewById(R.id.lists);

Объявим и заполним ArrayAdapter.
Он служит для работы с ListView.

adapter = new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_list_item_1, prodList);

MainActivity.this - контекст,
android.R.layout.simple_list_item_1 - XML-разметка для отдельного элемента списка
prodList - сам массив.

Установим адаптер

lw.setAdapter(adapter)

Список мы научились формировать. Но ещё не всё. Сделаем отдельную Activity (страницу) для товара.

Вешаем обработчик, а точнее слушатель клика на элемент ListView.

lw.setOnItemClickListener(new AdapterView.OnItemClickListener() 

Через параметры получаем выделенный элемент и сопутствующие данные.

@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

Далее

Intent intent = new Intent(MainActivity.this, ProductActivity.class);

Intent служит для вызова другой Activity.

MainActivity.this - контекст
ProductActivity.class - указываем явно необходимый activity.

Передаём данные в activity.
В нашем случае это id товара, по ключу - позиции в списке.

intent.putExtra("ProdInf", prodId.get(position).toString());

Запускаем новое activity

startActivity(intent);

Далее создаём ещё один activity, я его назвал ProductActivity.

В нём так же будет метод onCreate.

Получим и запишем данные переданные из другой активити

data = getIntent().getExtras().getString("ProdInf");

Создаём подобный класс, наследованный от AsyncTask. Для получения данных о товаре.

Только в цикле метода onPostExecute добавим следующее:

namep.setText(prodInfo.getString("name"));
model.setText(prodInfo.getString("model"));
itm.setText(prodInfo.getString("itm"));
itr.setText(prodInfo.getString("itr"));

До этого объявим текстовые поля:

model = (TextView) findViewById(R.id.model);
itm = (TextView) findViewById(R.id.itm);
itr = (TextView) findViewById(R.id.itr);
namep = (TextView) findViewById(R.id.name);

Вернёмся в onCreate и добавим к кнопке "Позвонить" слушатель.

bcallback = (Button) findViewById(R.id.bcallback);

bcallback.setOnClickListener(
    new View.OnClickListener()

Определим один метод onClick.

И вызовем намерение.

intent = new Intent(Intent.ACTION_DIAL, Uri.parse("tel:"+R.string.phone));

startActivity(intent);

Intent.ACTION_DIAL - вызываем набор номера.
Uri.parse("tel:"+R.string.phone) - устанавливаем номер телефона, в нашем случае он описан в ресурсах, в папке layouts, в strings.xml

<string name="phone">+79123456789</string>

Не забываем в AndroidManifest.xml прописать

<uses-feature android:name="android.hardware.telephony.gsm"/>

Листинг MainActivity

Листинг ProductActivity

Листинг string.xml

Что в итоге получилось

Материал подготовлен автором @zheev

0
52.498 GOLOS
На Golos с August 2017
Комментарии (2)
Сортировать по:
Сначала старые