2012-01-31 30 views
1

我已经使用ListActivty.I实现了示例应用程序。我使用了CustomAdapter,并且正在从Web服务中获取一些数组的文本。我将这些消息显示为list.when数据已从Web serice更改为数据未在列表中更改。为了从服务中获得更新的消息,我使用了广播接收器来接收更新。在我的广播接收器类中,我可以通过使用Alaram manger来获得lates消息。在这种情况下,我想在不知道的情况下更新UI用户。如何在android中更新UI上的ListView?

我写的代码得到的消息显示,从Web服务INTIAL vallues如下图所示:

usrMessages = new String[resultShoutMessage.size()]; 
    userName = new String[resultShoutMessage.size()]; 
    imgid = new Integer[resultShoutMessage.size()]; 

    for(int i=0;i<resultShoutMessage.size();i++) 
    { 
     Log.v("ShoutGetMsgsScreen", "resultMessage*******>>>>"+resultShoutMessage.get(i).getShoutMessageText()); 
     Log.v("ShoutGetMsgsScreen", "resultShoutNames*******>>>>"+resultShoutMessage.get(i).getShoutUserFirstName()); 
     usrMessages[i] = resultShoutMessage.get(i).getShoutMessageText(); 
     userName[i] = resultShoutMessage.get(i).getShoutUserFirstName(); 
     imgid[i] = R.drawable.person; 
    } 
+2

如果广播接收器在活动内声明,只需重新初始化适配器或调用notifyDatasetChanged()(更新数据后)....否则引发意图调用该活动,在'onNewIntent'中再次重新初始化适配器新的内容。 – st0le 2012-01-31 10:52:13

回答

1

在你可以使用IntentService这种情况下。注册一个BroadCastReceiver,它将监听从WebService下载数据的时间,并获得执行更新UI。通过您的意图onHandleIntent()做后台进程和sendBroadCast更新您的用户界面。 Here就是一个例子。