Вопрос схож с данной
темой, но я никак не могу привязать это к своему коду
public class MainActivity extends Activity {
public Elements title;
public Elements content;
public ArrayList<String> titleList = new ArrayList<>();
private ArrayAdapter<String> adapter;
private ListView lv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
lv = (ListView)findViewById(R.id.listView1);
new NewThread().execute();
adapter = new ArrayAdapter<String>(this,R.layout.list_item, R.id.pro_item, titleList);
}
public class NewThread extends AsyncTask<String, Void, String>{
@Override
protected String doInBackground(String...arg){
Document doc;
try{
titleList.clear();
for(int i = 1; i<=21;i++) {
doc = Jsoup.connect(URL+"/?paged="+i).get();
title = doc.select(".genpost-entry-title ");
content = doc.select(".genpost-entry-content");
for (int j = 0; j<title.size(); j++) {
titleList.add(title.get(j).text() + "\n\n" + content.get(j).text());
}
}
}catch (IOException e){
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(String result){lv.setAdapter(adapter);}
}
public abstract class InfiniteScrollListener implements AbsListView.OnScrollListener {
private int bufferItemCount = 10;
private int currentPage = 0;
private int itemCount = 0;
private boolean isLoading = true;
public InfiniteScrollListener(int bufferItemCount) {
this.bufferItemCount = bufferItemCount;
}
public abstract void loadMore(int page, int totalItemsCount);
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
}
@Override
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount)
{
if (totalItemCount < itemCount) {
this.itemCount = totalItemCount;
if (totalItemCount == 0) {
this.isLoading = true; }
}
if (isLoading && (totalItemCount > itemCount)) {
isLoading = false;
itemCount = totalItemCount;
currentPage++;
}
if (!isLoading && (totalItemCount - visibleItemCount)<=(firstVisibleItem + bufferItemCount)) {
loadMore(currentPage + 1, totalItemCount);
isLoading = true;
}
}
}
}
Сейчас код парсит все страницы одновременно, а нужно сделать динамическую подгрузку во время скролла. Вроде бы уже есть готовое решение, но я не могу применить его к своему коду.
Проблемы начинаются в части с ListView
myListView.setOnScrollListener(new InfiniteScrollListener(5) {
@Override
public void loadMore(int page, int totalItemsCount) {
doc = Jsoup.connect("/page/" + page).get();
content = doc.select("[style=margin:0.5em 0;line-height:1.785em]");
for (Element contents : content) {
if (!contents.text().contains("18+")) {
titleList.add(contents.text());
}
}
//Обновляем список
adapter.notifyDataSetChanged();
}
});
из приведенной выше
темы.
Я просто не знаю, куда нужно добавить эту часть кода