#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");