我的项目(简单的聊天应用程序)中有TextViews的ListView(消息)。这是发布消息的代码:
public void publish(View view) {
final EditText mMessage = (EditText) MainActivity.this.findViewById(R.id.new_message);
final Map<String, String> message = ImmutableMap.<String, String>of("sender", MainActivity.this.nickName, "message", mMessage.getText().toString(), "timestamp", DateTimeUtil.getTimeStampUtc());
MainActivity.this.mPubnub_DataStream.publish().channel(Constants.CHANNEL_NAME).shouldStore(true).message(message).async(
new PNCallback<PNPublishResult>() {
@Override
public void onResponse(PNPublishResult result, PNStatus status) {
try {
if (!status.isError()) {
mMessage.setText("");
Log.v(TAG, "publish(" + JsonUtil.asJson(result) + ")");
} else {
Log.v(TAG, "publishErr(" + JsonUtil.asJson(status) + ")");
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
);
}
我正在尝试从历史记录中输出消息:
this.mPubnub_DataStream.history()
.channel(Constants.CHANNEL_NAME)
.async(new PNCallback<PNHistoryResult>() {
@Override
public void onResponse(PNHistoryResult result, PNStatus status) {
}
});
我不知道如何重写onResponse方法。请帮我。
顺便说一句,我可以检查我的消息是否已存储,但是输出到终端并不是我真正需要的。
pubNub.history()
.channel(channelName)
.count(100)
.async(new PNCallback<PNHistoryResult>() {
@Override
public void onResponse(PNHistoryResult result, PNStatus status) {
for (int i = 0; i < 100; i++) {
System.out.println(result.getMessages().get(i).getEntry());
}
}
});
最佳答案
只要您实际上从历史记录调用中接收到消息,这更是一个UI数据绑定问题,而不是PubNub问题。
如果您愿意,那么此示例应用程序中的示例代码可能会有所帮助:github.com/pubnub/webinar-android-intro
关于java - 如何从PubNub方法history()在ListView中输出消息?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46344332/