Advertisement
Guest User

Untitled

a guest
Oct 18th, 2019
123
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.27 KB | None | 0 0
  1. package ru.sbertech.currencyconvert;
  2.  
  3. //package com.neoriddle.myapplication;
  4.  
  5. import android.app.Activity;
  6. import android.os.AsyncTask;
  7. import android.os.Bundle;
  8. import android.widget.ArrayAdapter;
  9. import android.widget.ListView;
  10. import org.jsoup.Jsoup;
  11. import org.jsoup.nodes.Document;
  12. import org.jsoup.nodes.Element;
  13. import org.jsoup.select.Elements;
  14. import java.io.IOException;
  15. import java.util.ArrayList;
  16.  
  17. public class App extends Activity {
  18.  
  19.     // благодоря этому классу мы будет разбирать данные на куски
  20.     public Elements title;
  21.  
  22.     // то в чем будем хранить данные пока не передадим адаптеру
  23.     private ArrayAdapter<String> adapter;
  24.     private ArrayAdapter<String> adapter1;
  25.     private ArrayAdapter<String> adapter2;
  26.     public ArrayList<String> nominal = new ArrayList<String>();
  27.     public ArrayList<String> name = new ArrayList<String>();
  28.     public ArrayList<String> currency = new ArrayList<String>();
  29.     // Listview Adapter для вывода данных
  30.  
  31.     // List view
  32.     private ListView lv;
  33.     private ListView lv1;
  34.     private ListView lv2;
  35.  
  36.     @Override
  37.     protected void onCreate(Bundle savedInstanceState) {
  38.  
  39.         super.onCreate(savedInstanceState);
  40.         setContentView(R.layout.activity_main);
  41.         // определение данных
  42.         lv = (ListView) findViewById(R.id.viewPager);
  43.         // запрос к нашему отдельному поток на выборку данных
  44.         new NewThread().execute();
  45.         // Добавляем данные для ListView
  46.         adapter = new ArrayAdapter<String>(this, R.layout.fragment_list_currency, R.id.recycler_list_currency, currency);
  47.         adapter1 = new ArrayAdapter<String>(this, R.layout.card_currency, R.id.full_text, nominal);
  48.         adapter2 = new ArrayAdapter<String>(this, R.layout.card_currency, R.id.name_currency, name);
  49.     }
  50.  
  51.     /** А вот и внутрений класс который делает запросы, если вы не читали статьи у меня в блоге про отдельные
  52.      * потоки советую почитать */
  53.     public class NewThread extends AsyncTask<String, Void, String> {
  54.  
  55.         // Метод выполняющий запрос в фоне, в версиях выше 4 андроида, запросы в главном потоке выполнять
  56.         // нельзя, поэтому все что вам нужно выполнять - выносите в отдельный тред
  57.         @Override
  58.         protected String doInBackground(String... arg) {
  59.  
  60.             // класс который захватывает страницу
  61.             Document doc;
  62.             try {
  63.                 // определяем откуда будем воровать данные
  64.                 doc = Jsoup.connect("https://cbr.ru/currency_base/daily/").get();
  65.                 // задаем с какого места, я выбрал заголовке статей
  66.                 title = doc.select(".data");
  67.                 // чистим наш аррей лист для того что бы заполнить
  68.                 nominal.clear();
  69.                 name.clear();
  70.                 currency.clear();
  71.  
  72.                 Elements table = title.get(0).children().get(0).children();
  73.                 table.remove(0);
  74.                 for (Element element : table) {
  75.                     nominal.add(element.children().get(2).textNodes().get(0).toString());
  76.                     name.add(element.children().get(3).textNodes().get(0).toString());
  77.                     currency.add(element.children().get(4).textNodes().get(0).toString());
  78.                 }
  79.             } catch (IOException e) {
  80.                 e.printStackTrace();
  81.             }
  82.             // ничего не возвращаем потому что я так захотел)
  83.             return null;
  84.         }
  85.  
  86.         @Override
  87.         protected void onPostExecute(String result) {
  88.  
  89.             // после запроса обновляем листвью
  90.             lv.setAdapter(adapter);
  91.             lv.setAdapter(adapter1);
  92.             lv.setAdapter(adapter2);
  93.         }
  94.     }
  95. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement