Как исправить Загрузить больше с дублированием данных AsyncTask? - android - PullRequest
0 голосов
/ 02 марта 2020

Я пытался увеличить нагрузку с помощью 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();
    }


}
...