android - 如何每10秒刷新一次Android ListView

标签 android listview refresh

我对 Android 还很陌生。我正在做这个teturial但我在刷新时遇到问题,无法理解如何刷新我的 ListView

        // Creating volley request obj
    JsonArrayRequest movieReq = new JsonArrayRequest(url,
            new Response.Listener<JSONArray>() {
                @Override
                public void onResponse(JSONArray response) {
                    Log.d(TAG, response.toString());
                    hidePDialog();

                    // Parsing json
                    for (int i = 0; i < response.length(); i++) {
                        try {

                            JSONObject obj = response.getJSONObject(i);
                            Movie movie = new Movie();
                            movie.setTitle(obj.getString("title"));
                            movie.setThumbnailUrl(obj.getString("image"));
                            movie.setRating(((Number) obj.get("rating"))
                                    .doubleValue());
                            movie.setYear(obj.getInt("releaseYear"));

                            // Genre is json array
                            JSONArray genreArry = obj.getJSONArray("genre");
                            ArrayList<String> genre = new ArrayList<String>();
                            for (int j = 0; j < genreArry.length(); j++) {
                                genre.add((String) genreArry.get(j));
                            }
                            movie.setGenre(genre);

                            // adding movie to movies array
                            movieList.add(movie);

                        } catch (JSONException e) {
                            e.printStackTrace();
                        }

                    }

                    // notifying list adapter about data changes
                    // so that it renders the list view with updated data
                    adapter.notifyDataSetChanged();
                }
            }, new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {
                    VolleyLog.d(TAG, "Error: " + error.getMessage());
                    hidePDialog();

                }
            });


/** REFRESH HERE /** 

 Thread t = new Thread() {

        @Override
        public void run() {
            try {
                while (!isInterrupted()) {
                    Thread.sleep(10000);
                    runOnUiThread(new Runnable() {
                        @Override
                        public void run() {
                            Log.e(TAG, "EVRY 10 SECOND START NOW ");

                            listView.invalidateViews();
                            listView.refreshDrawableState();
                            adapter.notifyDataSetChanged();

//                                Log.e(TAG, String.valueOf(movieList));

                            // fire the event

                        }
                    });
                }
            } catch (InterruptedException e) {
            }
        }
    };

    t.start();
    // Adding request to request queue
    AppController.getInstance().addToRequestQueue(movieReq);

我尝试了谷歌的所有方法...但不幸的是,这个notifyDataSetChanged()不起作用...

 listView.invalidateViews();
listView.refreshDrawableState();
adapter.notifyDataSetChanged();

最佳答案

将您的 Volley 请求代码放入一个方法中,我们将其命名为 id fetchData();

然后您可以在 10 秒后通过以下代码再次调用您的服务:

final Handler mHandler = new Handler();

        new Thread(new Runnable() {
            @Override
            public void run() {
                while (true) {
                    try {
                        Thread.sleep(10000);
                        mHandler.post(new Runnable() {

                            @Override
                            public void run() {
                                // Write your code here to call the method.
                              fetchData();
                            }
                        });
                    } catch (Exception e) {
                        // TODO: handle exception here
                        e.printStackTrace();
                    }
                }
            }
        }).start();

试试这个,如果有任何问题请告诉我。

关于android - 如何每10秒刷新一次Android ListView ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44924610/

相关文章:

android - 如何连接到 Android 上的 IPv6 地址?

android - 图像未在移动浏览器中显示

android - 检测 ADB 服务器是否在 Android 上运行?

java - 如何在不显示的情况下使用 Universal ImageLoader 加载图像

.net - 如何通过 Key 访问 ListView 子项?

Android Google Maps V2 不刷新

android:headerDividersEnabled 不工作

android - 如何在抽屉导航中放置 2 个 ListView?

jquery - 如何在刷新后或加载不同页面时保持颜色变化?

javascript - onclick 行为异常 - 刷新页面而不是显示内容