Java 如何获取加载数据以停止闪烁时的周期?

Java 如何获取加载数据以停止闪烁时的周期?,java,android,android-volley,shimmer,Java,Android,Android Volley,Shimmer,我正在使用截击请求,并希望在加载数据时添加闪烁。我可以用Handler执行,但我不知道数据何时会到来,也不能设置准确的时间 下面是我片段中的代码。我想将valuefalse设置为variableisShimmer,它的速度非常快,所以我的闪片没有运行: String url = "my_url"; JsonArrayRequest getArticleOfTheDayRequest = new JsonArrayRequest(Request.Method.GET, url, null,

我正在使用截击请求,并希望在加载数据时添加闪烁。我可以用Handler执行,但我不知道数据何时会到来,也不能设置准确的时间

下面是我片段中的代码。我想将value
false
设置为variable
isShimmer
,它的速度非常快,所以我的闪片没有运行:

String url = "my_url";
JsonArrayRequest getArticleOfTheDayRequest = new JsonArrayRequest(Request.Method.GET, url, null,
            response -> {
                try {
                    for(int i = 0; i < response.length(); i++){
                        JSONObject articleObject = response.getJSONObject(i);
                        int article_id = articleObject.getInt("article_id");
                        String title = articleObject.getString("title");
                        String text = articleObject.getString("text");
                        ArticleOfTheWeek articleOfTheWeek = new ArticleOfTheWeek(article_id, title, text);
                        articleOfTheWeekList.add(articleOfTheWeek);
                    }
                    articleOfTheWeekAdapter = new ArticleOfTheWeekAdapter(getContext(), articleOfTheWeekList);
                    recyclerView.setAdapter(articleOfTheWeekAdapter);
                    articleOfTheWeekAdapter.isShimmer = false;
                    articleOfTheWeekAdapter.notifyDataSetChanged();
                } catch (JSONException e) {
                    e.printStackTrace();
                }

            },
            error -> Log.d("Error.Response", error.getMessage() + " ")
    );

如您所见,如果我将isShimmer设置为true,则shimmer将无限运行。因此,我无法获得加载所有数据以更改
isShimmer

值的时间段。如果将微光放在父布局中而不是适配器布局中,则可能更容易保持微光状态。我希望采用以下方法:


1。活动/片段布局内部


可能是,如果将微光放在父布局中而不是适配器布局中,则更容易保持微光状态。我希望采用以下方法:


1。活动/片段布局内部


我在获取数据时使用了库来显示微光效果。首先将可见性设置为xml文件中的微光布局的真实可见性,然后在活动开始时启动微光
shimmervewcontainer.startShimmer()

在活动文件中为适配器设置数据后,在您的截击方法中设置
shimmerViewContainer.stopShimmer()

以及在
onPause()
onDestroy()

上停止闪烁,我已经使用库在获取数据时显示闪烁效果。首先将可见性设置为xml文件中的微光布局的真实可见性,然后在活动开始时启动微光
shimmervewcontainer.startShimmer()

在活动文件中为适配器设置数据后,在您的截击方法中设置
shimmerViewContainer.stopShimmer()



以及在
onPause()
onDestroy()

上停止闪烁,您在
适配器中显示和停止闪烁的具体原因是什么?@RahulGaur抱歉?我应该在哪里使用shimmer?您还可以在
JsonArrayRequest
中更新shimmer,在Json响应中显示和隐藏shimmer,在Json请求之前显示,在响应中接收数据时隐藏How?我不明白你的解决方案对我太有帮助了。非常感谢您在
适配器中显示并停止闪烁的具体原因是什么?@RahulGaur抱歉?我应该在哪里使用shimmer?您还可以在
JsonArrayRequest
中更新shimmer,在Json响应中显示和隐藏shimmer,在Json请求之前显示,在响应中接收数据时隐藏How?我不明白你的解决方案对我太有帮助了。非常感谢,您可以从ViewHolder中取出微光,然后根据当前代码正常加载数据,只需替换ArticleOfWeekaDapter.isShimmer=false;使用shimmer_container.setVisibility(View.GONE);从适配器取出微光后,您可以从ViewHolder取出微光,然后根据当前代码正常加载数据,只需替换ArticleOfWeekaDapter.isShimmer=false;使用shimmer_container.setVisibility(View.GONE);从适配器中取出微光后,我也在使用此库。但在将数据设置为适配器后,它已经设置好了,否?不是在适配器中,而是在活动文件中为适配器设置数据时,即recyclerView.setAdapter(ArticleOfWeekAdapter);shimmerViewContainer.stopShimmer();shimmerViewContainer.setVisibility(View.GONE);隐马尔可夫模型。。。我要花点时间检查一下我能从外面申报闪光吗?我的shimmer在我的文件中声明,即文章_of _the _day.xml我也在使用这个库。但在将数据设置为适配器后,它已经设置好了,否?不是在适配器中,而是在活动文件中为适配器设置数据时,即recyclerView.setAdapter(ArticleOfWeekAdapter);shimmerViewContainer.stopShimmer();shimmerViewContainer.setVisibility(View.GONE);隐马尔可夫模型。。。我要花点时间检查一下我能从外面申报闪光吗?我的微光在我的文件中声明,即:article_of_the_day.xml

public boolean isShimmer = true;
int shimmerNumber = 2;

@Override
    public void onBindViewHolder(@NonNull final ArticleOfTheWeekViewHolder holder, int position) {
        final ArticleOfTheWeek articleOfTheWeek = articleOfTheWeekList.get(position);

        if(isShimmer)
        {
            holder.shimmerFrameLayout.startShimmer();
        }else
            {
            holder.shimmerFrameLayout.stopShimmer();
            holder.shimmerFrameLayout.setShimmer(null);

            holder.textViewTitle.setBackground(null);
            holder.textViewTitle.setText(articleOfTheWeek.getTitle());
            holder.textViewDesc.setBackground(null);
            holder.textViewDesc.setText(Html.fromHtml(articleOfTheWeek.getText()));
        }

    }