android - 显示重试并在 10 秒后停止进度条,如果无法获取数据

标签 android internet-connection

我正在使用 Volley 从 API 获取数据并在回收器 View 中显示并显示进度条直到数据未加载,现在的问题是有时获取数据需要很多时间并且它也一直显示进度条。 我想要的是,如果它花费的时间超过 10 秒,那么 进度条 应该停止并在另一个布局上使用重试按钮显示检查互联网连接。

这是我的代码。

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.fragment_tab_one, container, false);
    SharedPreferences sharedPref = getActivity().getSharedPreferences("country", Context.MODE_PRIVATE);
    String country = sharedPref.getString("selectedCountry", "au");
    progressBar = (ProgressBar) view.findViewById(R.id.pbFragOne);
    listRecyclerView = (RecyclerView) view.findViewById(R.id.headlines_recycler);
    RecyclerView.LayoutManager linearLayoutManager = new LinearLayoutManager(getContext());
    listRecyclerView.setLayoutManager(linearLayoutManager);
    listRecyclerView.setItemAnimator(new DefaultItemAnimator());
    listRecyclerView.setHasFixedSize(true);
    latestNewsResponse();
    return view;
}
public void latestNewsResponse() {
    JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(Request.Method.GET, url, null, new Response.Listener<JSONObject>() {
        @Override
        public void onResponse(JSONObject response) {
            String str_response = response.toString();
            Gson gson = new Gson();
            News news = gson.fromJson(str_response, News.class);
            news_list = news.getArticles();
            if (!news.getStatus().contentEquals("ok")) {
                Toast.makeText(getContext(), "Check your connection", Toast.LENGTH_SHORT).show();
            }
            newsListAdapter = new NewsListAdapter(getContext(), news_list);
            progressBar.setVisibility(View.GONE);
            listRecyclerView.setAdapter(newsListAdapter);

        }
    }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {
        }
    });
    RequestQueue requestQueue = Volley.newRequestQueue(getContext());
    requestQueue.add(jsonObjectRequest);
}

最佳答案

如果您使用 Observable,只需创建 Observable.interval 填充间隔和 timeunit 作为参数。

关于android - 显示重试并在 10 秒后停止进度条,如果无法获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52292748/

相关文章:

android twitter retrieveRequestToken 401请求 token

android - 如何在 CameraX 中使用 Camera2Config.Extender

android - 如何在我通话时播放音频,可以让另一个叫我的人听到....?

linux - Bash 脚本(或多或少)可靠地检查互联网是否正常

android - 如何检查我是否连接到某个 wifi 网络?

android - 使用 OpenSL 的所有安卓设备以 8KHz 采样率进行语音通信

java - Android 应用程序 - 定位服务的@Override 方法出错

javascript - 在 JavaScript 中每次提交时检查互联网连接

android - 如何在 Android 中检查网络内的互联网连接(通过 HOTSPOT 使用其他设备的互联网)

c++ - 控制互联网连接