【发布时间】:2016-06-16 11:26:08
【问题描述】:
添加到 recyclerView 的项目在用户滚动之前不会显示。我正在使用 websockets 进行通信。当服务器上的用户发送消息时,服务器返回我正在解析的 json 模型并将其添加到 recyclerview 适配器。项目已添加到 recyclerview,但在我向上或向下滚动 recyclerview 之前它不会显示。我做了一个测试,我在其中添加了带有测试 Json 的静态字符串,当我单击一个按钮时,它会触发相同的方法,但在 websocket 之外使用测试数据,它会在 recyclerview 顶部添加项目。
使用此方法添加的项目在用户滚动之前不会显示:
WebSocket ws = factory.createSocket("wss://example.com/websocket");
ws.addListener(new WebSocketAdapter() {
@Override
public void onTextMessage(WebSocket websocket, String text) throws Exception {
adapter.add(parseWs(text);
}
});
private Discussion parseWs(String string) {
discussion = new JSONObject(string).getJSONObject("data").toString();
Gson gson = new Gson();
return gson.fromJson(discussion, Discussion.class);
}
////////////Adapter class////////////
public void add(Discussion disc) {
list.add(0,disc);
notifyItemInserted(0);
}
如果我通过单击按钮添加项目,项目会正常显示而无需滚动:
fab.setOnClickListener(v ->
adapter.add(parseWs(test));
mRecyclerView.scrollToPosition(0);
);
我正在使用 nv-weboskcet-client java 库。
【问题讨论】:
标签: android json android-recyclerview java-websocket