Java 如何获取加载数据以停止闪烁时的周期?
我正在使用截击请求,并希望在加载数据时添加闪烁。我可以用Handler执行,但我不知道数据何时会到来,也不能设置准确的时间 下面是我片段中的代码。我想将valueJava 如何获取加载数据以停止闪烁时的周期?,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,
false
设置为variableisShimmer
,它的速度非常快,所以我的闪片没有运行:
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()));
}
}