gpt4 book ai didi

android - 如何使用 Volley Android 显示 ProgressBar 更新

转载 作者:行者123 更新时间:2023-11-30 00:03:50 25 4
gpt4 key购买 nike

我在 ProgressBar 上显示进度时遇到问题。

我有使用 Volley 调用我的服务器的函数,当返回结果时,我已经实现了一个将数据返回到我的 Activity 的回调。

类似于:

public static void saveData(Data data, final VolleyCallbackJsonObject callback){
...
callback.onSuccessResponse(new JSONObject());
...
}

假设函数像这样在循环中被调用:

for(int i = 1; i<=5; i++){
final int copyIndex = i;
MyClass.saveData(new Data(i), new VolleyCallbackJsonObject() {
@Override
public void onSuccessResponse(JSONObject result) {
callFunctionForShowAndUpdateProgress(copyIndex);
}
})
}
}

我想显示一个 ProgressBar,它显示进度条从 1/5 到 5/5

所以我在我的 activityClass 中有我的函数:

public Class Test extends Activity{
private ProgressBar pb;
public void callFunctionForShowAndUpdateProgress(int index){
if(index == 1){
pb = (ProgressBar) findViewById(R.id.pbLoading);
pb.setMax(5);
pb.setIndeterminate(false);
pb.setVisibility(View.VISIBLE);
}
if(pb != null){
pb.setProgress(index);
}
if(index == 5){
pb.postDelayed(new Runnable() {
@Override
public void run() {
pb.setVisibility(View.GONE);
}
}, 3000);
}
}
}

我的问题是进度条没有设置进度,但它只显示在最后,所以用 5/5 不显示进度步骤(1/5、2/5、3/5、4/5)然后它将在 postDelayed 指定的 3 秒后隐藏。

那么我怎样才能显示所有的步骤呢?怎么了?

最佳答案

尝试在方法“onSuccessResponse”中对方法“callFunctionForShowAndUpdateProgress”进行 postDelay,而不是您已经进行的 postDelay,因为您进行的延迟仅在 i = 5 时发生,因此从技术上讲,进度会经历 2、3 和 4,但是你看不到它。

在“onSuccessResponse”中试试这个:

Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
callFunctionForShowAndUpdateProgress(copyIndex);
}
}, 3000);



顺便说一句,当调用方法“callFunctionForShowAndUpdateProgress”时'onSuccessResponse' 索引最初将为 1,这很好,然后编译器将转到第二个 if 语句

if(pb != null){
pb.setProgress(index);
}

并且会执行它,因为那里的条件是正确的,它不会导致问题,但是这样留下它不是一个好的做法,解决这个问题可以防止编译器通过添加 else 进入这个 if 语句。

希望对你有帮助

关于android - 如何使用 Volley Android 显示 ProgressBar 更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49405889/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com