Android - 如何从其他类动态添加ListView项

时间:2016-06-02 15:06:58

标签: java android listview google-cloud-messaging firebase-cloud-messaging

我正在使用FCM(最新的GCM)开发简单的文本消息应用程序,我在其中有一个名为ChatActivity的活动,它使用ListView显示消息列表。

但是,当任何新消息到达时,它将由FirebaseMessagingService类处理......

Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click
    Dim str_PathFileName As String = "C:\Temp"  'put your valid path
    Using fd As New OpenFileDialog
        With fd
            .Title = "Select File Dialog"
            .InitialDirectory = str_PathFileName
            .FileName = IO.Path.GetFileName(str_PathFileName)
            .Filter = "All files (*.*)|*.*"
            .Multiselect = False
            .RestoreDirectory = True
            Dim result As DialogResult = .ShowDialog
            MsgBox(result.ToString)
        End With
    End Using
End Sub

只要有新消息到达,此类就会在控制台中成功打印消息。

我的问题是,当我在onMessageReceived()类中从FCM收到新消息时,如何将该消息添加到ChatActivity中的ListView?

并且,在将项添加到ListView之后,如何在ListView适配器上调用.notifyDataSetChanged()?

2 个答案:

答案 0 :(得分:0)

您可以通过多种方式将数据传递给Activity,并在收到消息时通过扩展名传递ListView。一种简单的方法是在Activity中设置BroadcastReceiver,然后当您收到FCM消息时,可以使用LocalBroadcastManager发送一个广播,指示您的活动应该更新ListView的适配器。有关详情,请参阅LocalBroadcastManager

@McAwesomville建议使用Firebase Realtime Database,也是一个选项,您可以在Firebase Android Codelab中看到它用于简单的聊天应用。

答案 1 :(得分:0)

我在我的应用中使用FirebaseUI,效果非常好。您可以阅读更多相关信息here.