0

リサイクラビューでより多くの負荷を実装する方法は? 私はリストに500アイテムを取得していますが、20アイテムに制限したいと思います。 progresbarでさらにロードすると、次の20個のアイテムが表示されます。私の活動にRecyclerViewでより多くの負荷を実装する方法は?私はリストで500アイテムを取得しています

、私はそれがここにクラッシュを取得している負荷に

Call<NextUrl> call = api.getSubCatogeryProducts(url); 
    call.enqueue(new Callback<NextUrl>() { 
     @Override 
     public void onResponse(Call call, Response response) { 
      progressBar.setVisibility(View.VISIBLE); 
      NextUrl responseData = (NextUrl) response.body(); 
      String displayResponse; 
      if (response.isSuccessful()) { 

       displayResponse = ""; 

       for (int j = 0; j <20; j++) { 
        productAttributes = responseData.getProductInfoList().get(j).getProductBaseInfo().getProductAttributes(); 
        sendingproducts.add(productAttributes); 

       } 

       mDataAdapter = new DataAdapter(sendingproducts, recyclerView); 

       progressBar.setVisibility(View.GONE); 
       recyclerView.setAdapter(mDataAdapter); 
       Toast.makeText(TestActivity.this, "loading data", Toast.LENGTH_SHORT).show(); 

      } else { 
       progressBar.setVisibility(View.GONE); 

       Toast.makeText(TestActivity.this, "Un Successful", Toast.LENGTH_SHORT).show(); 

      } 
      progressBar.setVisibility(View.GONE); 

     } 


     @Override 
     public void onFailure(Call call, Throwable t) { 
      progressBar.setVisibility(View.GONE); 

      Toast.makeText(DashboardActivity.context, " failed to get the data", Toast.LENGTH_LONG).show(); 
     } 
    }); 
} 

を一覧表示するには、よりlistiner

mDataAdapter.setOnLoadMoreListener(new OnLoadMoreListner() { 
     @Override 
     public void onLoadMore() { 
      //add null , so the adapter will check view_type and show progress bar at bottom 
      sendingproducts.add(null); 
      mDataAdapter.notifyItemInserted(sendingproducts.size() - 1); 

      handler.postDelayed(new Runnable() { 
       @Override 
       public void run() { 
        // remove progress item 
        sendingproducts.remove(sendingproducts.size() - 1); 
        mDataAdapter.notifyItemRemoved(sendingproducts.size()); 
        //add items one by one 
        int start = sendingproducts.size(); 
        int end = start + 20; 

        if(end<=sendingproducts.size()){ 
         sendingproducts.addAll(sendingproducts.subList(start,end)); 
         mAdapter.notifyItemInserted(sendingproducts.size()); 

        } 
        mDataAdapter.setLoaded(); 
        //or you can add all at once but do not forget to call mAdapter.notifyDataSetChanged(); 
       } 
      }, 2000); 

     } 
    }); 


} 
アダプタで

recyclerView.setOnScrollListener(new RecyclerView.OnScrollListener() { 
      @Override 
      public void onScrolled(RecyclerView recyclerView, int dx, int dy) { 
       super.onScrolled(recyclerView, dx, dy); 

       int total = linearLayoutManager.getItemCount(); 
       int firstVisibleItemCount = linearLayoutManager.findFirstVisibleItemPosition(); 
       int lastVisibleItemCount = linearLayoutManager.findLastVisibleItemPosition(); 

       //to avoid multiple calls to loadMore() method 
       //maintain a boolean value (isLoading). if loadMore() task started set to true and completes set to false 
       if (!loading) { 
        if (total > 0) 
         if ((total - 1) == lastVisibleItemCount) { 

//を追加した製品を取得していますそれが条件に達すると、合計-1 = lastvisibleitemcount = 20 //

      onLoadMoreListener.onLoadMore(); 
         } else 
          Log.e("ok","okokokokokokoko"); 
       } 
      } 

お願いします。

答えて

関連する問題