2017-09-06 27 views
0

私のアプリケーションでページ分割の概念を実装しています。細かいプログレスバーが非表示になっている場所が非表示になっていないことが表示されています続きを表示

問題がある:がある場合のみ4または5には、プログレスバーが、私はどのようにすることができ、より多くのデータ

を取得するためにスクロールしたときにのみプログレスバーが来なければならないことのように実行しないべき進展し続けるで記録修正する

final RecyclerView.LayoutManager mLayoutManager = new LinearLayoutManager(mContext); 
      recyclerView.setLayoutManager(mLayoutManager); 
      recyclerView.setItemAnimator(null); 
      parishNewsAdapter = new ParishNewsAdapter(recyclerView, listParishNews, mActivity, mContext); 
      recyclerView.setAdapter(parishNewsAdapter); 

      parishNewsAdapter.setOnLoadMoreListener(new OnLoadMoreListener() { 
       @Override 
       public void onLoadMore() { 
        finalList.add(null); 
        parishNewsAdapter.notifyItemInserted(finalList.size() - 1); 

        new Handler().postDelayed(new Runnable() { 
         @Override 
         public void run() { 
          ArrayList<ParishNewsModel> mList = new ArrayList<>(); 
          finalList.remove(finalList.size() - 1); 
          parishNewsAdapter.notifyItemRemoved(finalList.size()); 
          index = index + 15; 
          int end = index + 1; 
          mList = tableHelper.getParishNews(end); 
          if (mList.size() == 0) { 
           ParishNewsAdapter.LoadingViewHolder.progressBar.setVisibility(View.GONE); 
          } 
          parishNewsAdapter.addObjectToList(mList); 
          parishNewsAdapter.notifyDataSetChanged(); 
          parishNewsAdapter.setLoaded(); 
         } 
        }, 1000); 
       } 
      }); 

This is where i just call the adapter where the progress should show when i swipe to see more data 

here is my adapter 

private ArrayList<ParishNewsModel> parishList; 
    ParishNewsModel parishNewsModel; 
    Context mContext; 
    private final int VIEW_TYPE_ITEM = 0; 
    private final int VIEW_TYPE_LOADING = 1; 
    private OnLoadMoreListener onLoadMoreListener; 

    private boolean isLoading; 
    private Activity activity; 
    private int visibleThreshold = 5; 
    private int lastVisibleItem, totalItemCount; 
    int limit = 10; 

    public ParishNewsAdapter(RecyclerView recyclerView, ArrayList<ParishNewsModel> parishList, Activity activity, Context mContext) { 
     this.activity = activity; 
     this.parishList = parishList; 
     this.mContext = mContext; 

     final LinearLayoutManager linearLayoutManager = (LinearLayoutManager) recyclerView.getLayoutManager(); 
     recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() { 
      @Override 
      public void onScrolled(RecyclerView recyclerView, int dx, int dy) { 
       super.onScrolled(recyclerView, dx, dy); 
       totalItemCount = linearLayoutManager.getItemCount(); 
       lastVisibleItem = linearLayoutManager.findLastVisibleItemPosition(); 
       if (!isLoading && totalItemCount <= (lastVisibleItem + visibleThreshold)) { 
        if (onLoadMoreListener != null) { 
         onLoadMoreListener.onLoadMore(); 
        } 
        isLoading = true; 
       } 
      } 
     }); 
    } 

    public void setOnLoadMoreListener(OnLoadMoreListener mOnLoadMoreListener) { 
     this.onLoadMoreListener = mOnLoadMoreListener; 
    } 

    @Override 
    public int getItemViewType(int position) { 
//  return parishList.get(position) == null ? VIEW_TYPE_LOADING : VIEW_TYPE_ITEM; 
     if (parishList.get(position) == null) { 
      return VIEW_TYPE_LOADING; 
     } else { 
      return VIEW_TYPE_ITEM; 
     } 
    } 


    @Override 
    public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
     if (viewType == VIEW_TYPE_ITEM) { 
      View view = LayoutInflater.from(activity).inflate(R.layout.parish_news_reference_layout, parent, false); 
      return new MyViewHolder(view); 
     } else if (viewType == VIEW_TYPE_LOADING) { 
      View view = LayoutInflater.from(activity).inflate(R.layout.lazy_load_progress_bar, parent, false); 
      return new LoadingViewHolder(view); 
     } 
     return null; 
    } 

    @Override 
    public void onBindViewHolder(RecyclerView.ViewHolder holder, final int position) { 
     if (holder instanceof MyViewHolder) { 
      ParishNewsModel newsModel = parishList.get(position); 
      MyViewHolder myViewHolder = (MyViewHolder) holder; 
      myViewHolder.title.setText(newsModel.getTitleOfTheNews()); 
      myViewHolder.short_description.setText(Html.fromHtml(newsModel.getDescription())); 
      myViewHolder.date_of_text.setText(Html.fromHtml(newsModel.getDateOfNews())); 
      String str = newsModel.getParishNewsImage(); 
      Glide.with(mContext).load(str).thumbnail(Glide.with(mContext).load(R.drawable.jesus)).into(myViewHolder.circleImageView); 
     } else if (holder instanceof LoadingViewHolder) { 
      LoadingViewHolder loadingViewHolder = (LoadingViewHolder) holder; 
      loadingViewHolder.progressBar.setVisibility(View.VISIBLE); 
      loadingViewHolder.progressBar.setIndeterminate(true); 
     } 
     holder.itemView.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       parishNewsModel = parishList.get(position); 
       AppUtils.model = parishNewsModel; 
       if (AppUtils.model != null) { 
        Intent intent = new Intent(mContext, ScrollingActivity.class); 
        mContext.startActivity(intent); 
       } 
      } 
     }); 
    } 

    static class MyViewHolder extends RecyclerView.ViewHolder { 
     public TextView title, short_description, date_of_text; 
     ImageView circleImageView; 

     public MyViewHolder(View itemView) { 
      super(itemView); 
      title = (TextView) itemView.findViewById(R.id.title_parish_news); 
      short_description = (TextView) itemView.findViewById(R.id.short_description); 
      date_of_text = (TextView) itemView.findViewById(R.id.date_published); 
      circleImageView = (ImageView) itemView.findViewById(R.id.news_image); 
     } 
    } 

    public static class LoadingViewHolder extends RecyclerView.ViewHolder { 
     public static ProgressBar progressBar; 

     public LoadingViewHolder(View itemView) { 
      super(itemView); 
      progressBar = (ProgressBar) itemView.findViewById(R.id.progressBar1); 
     } 
    } 

    @Override 
    public int getItemCount() { 
     return parishList == null ? 0 : parishList.size(); 

    } 

    public void addObjectToList(ArrayList<ParishNewsModel> list) { 
     parishList.addAll(list); 
    } 

    public void setLoaded() { 
     isLoading = false; 
    } 

H私はさらに移動してください。

答えて

1

onBindViewHolderのアダプタからプログレスバーを削除し、 postDelayedの中に入れてください。これは、あなたが下にスクロールすると、BindViewHolderは再び を呼び出し、再びその内部に進行状況バーが表示されるように設定するからです。

関連する問題