We need to get some textView out of listView. There are only headings out. How do you make an adapter?



  • package com.example.worker.webparsing;
    
    import android.app.Activity;
    import android.os.AsyncTask;
    import android.os.Bundle;
    import android.widget.ArrayAdapter;
    import android.widget.ListView;
    
    import org.jsoup.Jsoup;
    import org.jsoup.nodes.Document;
    import org.jsoup.select.Elements;
    
    import java.io.IOException;
    import java.util.ArrayList;
    
    public class MainActivity extends Activity {
    
        // благодоря этому классу мы будем разбирать данные на куски
        public Elements storyTitle;
        public Elements storyText;
    
        // то в чем будем хранить данные пока не передадим адаптеру
        public ArrayList<String> titleList = new ArrayList<String>();
        public ArrayList<String> textList = new ArrayList<String>();
    
        // Listview Adapter для вывода данных
        private ArrayAdapter<String> adapter;
    
        // List view
        private ListView lv;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
    
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            // определение данных
            lv = (ListView) findViewById(R.id.listView);
    
            // запрос к нашему отдельному поток на выборку данных
            new NewThread().execute();
    
            // Добавляем данные для ListView
            adapter = new ArrayAdapter<String>(this, R.layout.list_item, R.id.text1, titleList);
        }
    
        // внутрений класс который делает запросы
        public class NewThread extends AsyncTask<String, Void, String> {
    
            // Метод выполняющий запрос в фоне, в версиях выше 4 андроида, запросы в главном потоке выполнять
            // нельзя, поэтому все что вам нужно выполнять - выносите в отдельный тред
            @Override
            protected  String doInBackground(String... arg) {
                String url = "https://news.yandex.ru/?lang=ru";
    
                // класс который захватывает страницу
                Document doc;
    
                try {
                    // определяем откуда будем воровать данные
                    doc = Jsoup.connect(url).get();
                    // задаем с какого места, я выбрал заголовке статей
                    storyTitle = doc.select(".story__title");
                    storyText = doc.select(".story__text");
    
                    // чистим наш аррей лист для того что бы заполнить
                    titleList.clear();
                    textList.clear();
    
                    // и в цикле захватываем все данные какие есть на странице
                    for (org.jsoup.nodes.Element storyTitles : storyTitle) {
                        // записываем в аррей лист
                        titleList.add(storyTitles.text());
                    }
                    for (org.jsoup.nodes.Element storyTexts: storyText) {
                        // записываем в аррей лист
                        textList.add(storyTexts.text());
                    }
                } catch (IOException e) {
                    e.printStackTrace();
                }
                // ничего не возвращаем потому что я так захотел)
                return  null;
             }
    
            @Override
            protected void onPostExecute(String result) {
                // после запроса обновляем листвью
                lv.setAdapter(adapter);
            }
        }
    }
    


  • You need to:

    1. I'll write it.
    2. Make your mark.
    3. Total getView() Apply the text to the elements of the note

    And then redo it all. RecyclerView Okay. ListView I'm tired.




Suggested Topics

  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2