相关疑难解决方法(0)

RecyclerView 在软键盘打开/关闭之前不会更新

我有一个帖子提要(类似于 Facebook 新闻提要)活动,在它的布局中我有一个EditText,顶部有共享按钮,下面有一个RecyclerView。RecyclerView 通过从 Server 获取所有 Posts 并通过 Adapter in OnCreateMethod绑定数据来显示所有用户的 Posts 。

当用户通过在 EditText 中输入一些文本并点击共享按钮发布内容时,数据将发送到服务器(我正在使用 Retrofit),并在服务器成功响应后调用相同的函数,该函数调用OnCreateMethod 以显示所有帖子以更新回收器视图。

我面临的问题是数据已发布到服务器,但仅当我在键入后按后退按钮隐藏/关闭键盘或通过点击 EditText 显示/打开键盘时,布局才会更新。

以下是一些代码以便更好地理解:

在这里,当用户发布某些内容时,我向服务器发送请求:

Call<CreatePost> call = mAPIService.sharePost(apiKey, post_description);
        call.enqueue(new Callback<CreatePost>() {
            @Override
            public void onResponse(@NonNull Call<CreatePost> call, @NonNull Response<CreatePost> response) {
                boolean error = response.body().getError();
                if (!error) {
                    displayFeedPosts();
                }
            }

            @Override
            public void onFailure(@NonNull Call<CreatePost> call, @NonNull Throwable t) {
                Log.d(TAG, "Error: " + t.getMessage());
            }
        });
Run Code Online (Sandbox Code Playgroud)

这是 …

android refresh updates android-layout android-recyclerview

7
推荐指数
1
解决办法
1924
查看次数

带有过滤器的Listview将不会刷新,直到键盘被隐藏或按下返回

我有一个列表视图,显示联系人列表.我在listview上方的布局中添加了EditText,因此我可以使用Filter进行搜索.我使用EditText上的onTextChanged Listener实现了这个.我的listview适配器是一个自定义适配器,它扩展了BaseAdapter并实现了Filterable.我的过滤器可以正常工作.问题是,当我输入时,数据集会刷新,但列表视图本身不会刷新,直到我隐藏键盘或按返回键.如果我在EditText中输入一些文本后尝试点击列表视图但在关闭键盘或按回车之前,我收到此错误:

java.lang.IllegalStateException: The content of the adapter has changed 
but ListView did not receive a notification. Make sure the content of 
your adapter is not modified from a background thread, but only from the UI thread.
Run Code Online (Sandbox Code Playgroud)

现在我肯定不会从UI线程以外的线程修改适配器的内容.

谁能解释一下可能导致这个问题的原因?

实际上,我通过调用找到了一种解决方法,Activity.onContentChanged()但我仍然很好奇为什么我实际上需要手动刷新.

android listview filter

4
推荐指数
1
解决办法
1888
查看次数