【问题标题】:How to display progress bar during span size is changed in Recycler View GridLayout?如何在 Recycler View GridLayout 中更改跨度大小期间显示进度条?
【发布时间】:2021-03-31 23:12:48
【问题描述】:

我正在使用RecyclerViewGridLayout 来展示产品。我有一个按钮,单击时会更改跨度大小。我使用gridLayoutManager.setSpanSizeLookup 来动态更改跨度大小。一切正常,但是当我单击按钮时,需要一些时间来更改跨度大小。我想在这个过程中显示一个进度条。我该怎么做?

 public void onGridViewClick() {
        if (isGridViewEnabled){
            gridLayoutManager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {
                @Override
                public int getSpanSize(int position) {
                    switch (adapter.getItemAtPosition(position).getType()) {
                        case BaseGoodkartSearchResultModel.SEARCH_ITEM: return 2;
                        case BaseGoodkartSearchResultModel.SWAN_ITEM:  return 2;
                        case BaseGoodkartSearchResultModel.OFFER_EXPIRED: return 2;
                    }
                    return 1;
                }
            });
            isGridViewEnabled=false;

        }else {
            gridLayoutManager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {
                @Override
                public int getSpanSize(int position) {
                    switch (adapter.getItemAtPosition(position).getType()) {
                        case BaseGoodkartSearchResultModel.SEARCH_ITEM: return 1;
                        case BaseGoodkartSearchResultModel.SWAN_ITEM:  return 2;
                        case BaseGoodkartSearchResultModel.OFFER_EXPIRED: return 2;
                    }
                    return 1;
                }
            });
            isGridViewEnabled=true;
        }
        
    }

【问题讨论】:

  • “这需要一些时间”是什么意思?是不是比 recyclerview 的单次布局 pass 还要长?
  • cutt.ly/9ciULzN请查看此视频

标签: android android-recyclerview grid-layout


【解决方案1】:

当用户单击网格视图并在视图加载后关闭时,只需在其中显示一个带有进度条的警报对话框(默认进度条,如圆圈)。

        AlertDialog alertDialog;  
        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        builder.setCancelable(false);
        builder.setView(R.layout.progresslayout);// This Layout just contain a simple progress bar
        alertDialog = builder.create();
        alertDialog.show();
        alertDialog.dismiss();// to dismiss when layout loaded

【讨论】:

  • 我已经试过了,还是不行,我怎么知道recycler view现在已经成功改变了布局? (这样我就可以关闭进度条)
  • 只需启动一个线程来检查您的 isGridViewEnabled 并关闭
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-26
  • 2021-08-10
  • 1970-01-01
相关资源
最近更新 更多