当我拉动刷新时,ListView在更新之前消失

时间:2016-03-24 23:56:08

标签: android android-layout listview android-recyclerview

我使用SwipeRefreshLayout使用带有PullToRefresh机制的ListView。我在初始化时将代码中的SwipeRefreshLayout动态地添加到ListView中。

<!DOCTYPE html>
<!--
To change this license header, choose License Headers in Project Properties.
To change this template file, choose Tools | Templates
and open the template in the editor.
-->
<html>
    <head>
        <title>Poetry-yuc217</title>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        

    </head>
    <body>
        <div class="container">
            <form>
                <input id = "word" type = "text" name = "word">
                <input id = "add" type = "button" value = "Add Word">
                <br>
                
            </form>
            <button type="button" class="listButton">this</button>
               

        </div>


        
   

enter code here
    </body>
</html>

上面的代码将swipeRefreshLayout添加到父级(在listView当前所在的位置),然后将listView添加为swipeRefreshLayout的子级。

当我进行刷新时,会进行网络调用 - 获取数据,存储在数据库中,然后使用CursorAdapter加载。

问题:

当我拉动刷新时,我看到一个空白屏幕一秒钟,UI会自动更新所有项目。但是当显示空白屏幕并触摸屏幕时,它会响应点击事件并立即显示ListView。

我需要ListView在获取数据时显示所有时间(显示PTR视图时),并在新数据可用时立即更新。

我有什么问题吗?我已经尝试通过将一个runnable发布到SwipeRefreshLayout并获取新数据来运行setRefreshing为true。我认为这与数据获取无关。

出现空白屏幕时未更改适配器(这意味着ListView仍应可见)。

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

您正在移除视图,然后重新添加视图。适配器应该重新绘制新数据。不要删除视图,而是在刷新数据及其准备就绪时,在适配器上调用notifyDataSetChanged()。