Say listview.java
是一个创建适配器并将其分配给列表视图的文件。
我想要的是当我收到GSM通知时我想刷新该listview适配器。因此,一旦收到通知,我的列表视图应包含新数据。
我正在使用onMessageReceived(String from, Bundle data)
这种GcmListenerService
的方法。
我可以从类 MyGcmListenerService扩展GcmListenerService {} 调用listview.java的一些方法来刷新适配器并分配给listview吗?
如果用户已经在listview布局上,那么我希望它能够使用新数据进行更新。
任何想法的人都该怎么做?
更清晰
listview.java中的我使用来自共享prefs的数据创建了一个适配器。 当我收到GSM通知时,我对共享的首选项进行了一些更改。现在我想要使用新的共享首选项重新创建我的适配器,并且应该将其分配给列表视图。
现在有人吗?
答案 0 :(得分:0)
在onMessageReceived(String from, Bundle data)
内,您可以尝试listviewAdapter.notifyDataSetChanged()
。来自docs of notifyDataSetChanged
通知附加的观察者基础数据已被更改,反映数据集的任何视图都应自行刷新。
答案 1 :(得分:0)
您可以在onRecieve方法上使用广播接收器,如此
for i in "${array[@]}"
do
if [[ $j -ge $n ]];then
break
else
sum=$(( $sum + $i ))
(( j = j + 1 ))
fi
done
在活动中你将不得不实施这样的改变
JSON
并在接收方法上使用adater.notifydatasetchanged
刷新适配器答案 2 :(得分:0)
在接收推送通知时使用BroadcatReceiver进行刷新列表视图。
在ListView的活动中添加以下代码,
ListView活动
@Override
public void onCreate(Bundle savedInstanceState) {
-------
IntentFilter filter = new IntentFilter(1001);
LocalBroadcastManager.getInstance(this).registerReceiver(
handlePushNewMessage, filter);
}
private final BroadcastReceiver handlePushNewMessage = new BroadcastReceiver() {
@Override
public void onReceive(Context context, final Intent intent) {
// Update list here and refresh listview using adapter.notifyDataSetChanged();
}
};
@Override
protected void onDestroy() {
LocalBroadcastManager.getInstance(this).unregisterReceiver(handlePushNewMessage);
super.onDestroy();
}
在 MyGcmListenerService.java 中,在 onMessageReceived()
上添加以下代码Intent intent1 = new Intent(1001).putExtra("MESSAGE", message);
LocalBroadcastManager.getInstance(getApplicationContext()).sendBroadcast(intent);