Получить более одного элемента JSoup Java Android

#java #android #jsoup

#java — язык #Android #jsoup ( суп ) #java #jsoup

Вопрос:

Я пытаюсь получить список элементов для формирования списка воспроизведения, и я могу получить только один из элементов. Вот код, который я отправляю в BindView моего recyclerview:

 @Override
public void onBindViewHolder(PlaylistViewHolder holder, int position)
{

    try
    {
        String url = "https://www.c895.org/playlist";
        Document document = Jsoup.connect(url).get();

        Element playlist = document.select("#playlist").first();

        List<TrackInfo> tracks = new ArrayList<>();

        for(Element track : playlist.children())
        {
            long time = Long.parseLong(track.dataset().get("ts"));
            String title = track.select(".title").text();
            String artist = track.select(".artist").text();

            tracks.add(new TrackInfo(new Date(time * 1000), title, artist));
        }
        for(int i = 0; i < tracks.size() - 1; i  )
        {

            holder.titlesView.setText(tracks.get(i).toString());
        }
    }
    catch(IOException e)
    {
        e.printStackTrace();
    }

}
  

В идеале я хотел бы получить около 10-20 результатов. Могу ли я в любом случае это сделать?

Комментарии:

1. Не могли бы вы, пожалуйста, поделиться еще некоторыми фрагментами вашего кода? Я пока не смог воспроизвести вашу проблему. Все значения списка воспроизведения находятся в вашем списке информации о треке. Возможно, отображается только последний.

2. На мой взгляд, все в порядке — я немного изменил ваш код — я не знаю, что TrackInfo такое, и я пробовал это под JVM, а не Android, но мой результат Feel It-Max Styler Wait Another Day-Mike Williams x Mesto Breathe (ft. Jem Cooke)-CamelPhat X Cristoph Hey Brother-Avicii и так далее — У меня более 200 результатов.

Ответ №1:

Это потому, что нужная вам html-часть находится в следующем теге:

 <div id="playlist">

</div>
  

Таким образом, вы не можете использовать следующее:

 Element playlist = document.select("#playlist").first();
  

но вам нужно использовать div#playlist , чтобы получить весь элемент списка воспроизведения:

 Element playlist = document.select("div#playlist");