Есть парсер, который вытаскивает с сайта ссылки на картинки и дальше при помощи Picasso они загружаются в GridView
. Так как картинок очень много, вытащить все ссылки, и загрузить картинки, при моей реализации, очень долго
public class MainActivity extends Activity {
public ArrayList<String> linkList = new ArrayList<String>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Log.d("LOG", "titleList:" + linkList);
new ParsingFile().execute();
}
public class ParsingFile extends AsyncTask<String, Void, String> {
protected int pages = 0;
@Override
protected void onPreExecute() {
Log.d("LOG", "START");
}
@Override
protected String doInBackground(String... arg) {
try {
/*Смотрю сколько страниц на сайте*/
Document doc = Jsoup.connect("http://mintmanga.com/list?sortType=rate").get();
Elements allPages = doc.select(".step");
Element lastPage = allPages.last();
pages = Integer.parseInt(lastPage.text());
} catch (IOException e) {
e.printStackTrace();
}
try {
/*Собираю ссылки на первой странице*/
Document doc = Jsoup.connect("http://readmanga.me/list?sortType=rate").get();
Elements link = doc.select("img[class*=lazy]");
linkList.clear();
for (Element links : link) {
linkList.add(links.attr("data-original"));
}
} catch (IOException e) {
e.printStackTrace();
}
try {
/*Пробегаю о остальным страницам и собираю ссылки*/
for (int i = 1; i < pages; i++){
Document doc = Jsoup.connect("http://readmanga.me/list?sortType=rate&offset=" + Integer.toString(i*70)).get();
Elements link = doc.select("img[class*=lazy]");
linkList.clear();
for (Element links : link) {
linkList.add(links.attr("data-original"));
}
}
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(String result) {
/*Отправляю ссылки на загрузку*/
GridView gridView = (GridView) findViewById(R.id.images_gridview);
gridView.setAdapter(new ImageAdapter(MainActivity.this, linkList));
Log.d("LOG", "PAGES:" + pages);
}
}
}
Поэтому логично было бы загружать не все сразу, а по мере того, как пользователь листает ленту (например, на первой странице 20 картинок, они загружаются сразу, когда пользователь пролистывает до конца, подгружаются картинки со второй картинки и т.д). От сюда вопрос: как определить что пользователь долистал до конца заполненного GridView
?
Вам нужно обработать событие onScroll
при помощи OnScrollListener
.
gridView.setOnScrollListener( new OnScrollListener() {
@Override
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
if((visibleItemCount+firstVisibleItem)==totalItemCount){
// Пользователь до листал до конца.
}
}
});
Приблизительно как-то так.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Ребят, подскажите пожалуйста, как указать путь к файлу чтобы он не ругался? FileNotFoundException
Есть конструкция которая находится в :
При первом запуске maven проекта такая ошибка случилась
Друзья привет у меня массивы в суммы собираются где одинаковые ключи, потмо выдаю два массива в куче, но вот проблема чтото один из массивов...