Я пытался увеличить нагрузку с помощью asynctask, но по какой-то причине, когда я быстро прокручиваю вниз, он снова показывает мне те же элементы. Для опыта, если я прокручиваю вниз, мой список имеет (1, 2, 3, 4), и когда я прокручиваю больше вниз и загружаю больше предметов, он дает мне те же предметы, что и предыдущий (1, 2, 3, 4). Я надеюсь, что это достаточно ясно, и если нет, то я мог бы попытаться объяснить это лучше. Вот мой код:
private class GetMoreData extends AsyncTask<Void, Integer, List<Item>> {
private GetMoreData() {}
protected List<Item> doInBackground(Void... param1VarArgs) {
return JsonParsingData.searchArticles(keyword,items.size(),20);
}
protected void onPostExecute(final List<Item> param1Info) {
if (param1Info != null) {
adapter.setLoadMore(new IloadMore() {
@Override
public void onLoadMore() {
if (items.size()<total)
{
items.add(null);
adapter.notifyItemInserted(items.size()-1);
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
items.remove(items.size() - 1);
adapter.notifyItemRemoved(items.size());
int index = 1;
int end = index + 20;
if(param1Info.size()<20)
end = param1Info.size();
for(int i = index;i<end;i++)
{
if(param1Info.get(i).getID() != null){
Item item= new Item(param1Info.get(i).getID(),param1Info.get(i).getTitle(),
param1Info.get(i).getImage(), param1Info.get(i).getDatePub(), param1Info.get(i).getLink());
items.add(item);
Log.e("Get More Data ID: "+i+": ", param1Info.get(i).getID());
Log.e("Get More Data Titre: "+i+": ", param1Info.get(i).getTitle());
}
}
loadMore = true;
adapter.notifyDataSetChanged();
adapter.setLoaded();
if(items.size() < total && excMore ) {
new GetMoreData().execute();
}else
Log.e("Tab 1", "" + excMore );
}
},10000);
}else {
Toast.makeText(RechercheActivity.this,"Load data completed !", Toast.LENGTH_SHORT).show();
}
}
});
}
}
protected void onPreExecute() {
super.onPreExecute();
}
}