刷新GSM通知上的listview适配器

时间:2016-04-27 06:56:33

标签: java android listview

Say listview.java是一个创建适配器并将其分配给列表视图的文件。

我想要的是当我收到GSM通知时我想刷新该listview适配器。因此,一旦收到通知,我的列表视图应包含新数据。

我正在使用onMessageReceived(String from, Bundle data)这种GcmListenerService的方法。

我可以从类 MyGcmListenerService扩展GcmListenerService {} 调用listview.java的一些方法来刷新适配器并分配给listview吗?

如果用户已经在listview布局上,那么我希望它能够使用新数据进行更新。

任何想法的人都该怎么做?

更清晰

listview.java中的

我使用来自共享prefs的数据创建了一个适配器。 当我收到GSM通知时,我对共享的首选项进行了一些更改。现在我想要使用新的共享首选项重新创建我的适配器,并且应该将其分配给列表视图。

现在有人吗?

3 个答案:

答案 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);