使用处理程序或来自外部onCreate的任何其他技术/更新listView填充listView

时间:2016-06-08 13:27:44

标签: android listview

我有成员变量String mActivity [],它通过onConnected函数每3秒更新一次。 onCreate连接API,(使用Api.connect())。 我必须显示以mActivity保存的数据,但我无法从外部onConnect更新数据。

如何使用处理程序或任何其他技术更新listView?

完整代码太长而无法发布 - 因此我发布了代码段。

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mApiClient.connect();
}

将字符串变量声明为成员变量。

 @Override
public void onConnected(@Nullable Bundle bundle) {
    Intent intent = new Intent(this, ActivityRecognizedService.class);
    PendingIntent pendingIntent = PendingIntent.getService(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
    ActivityRecognition.ActivityRecognitionApi.requestActivityUpdates(mApiClient, 3000, pendingIntent);
}

onConnected调用ActivityRecognizedService,它改变了mActivity []的值(通过创建Activity的一个对象);因此,动态值每3秒变化一次。我需要在listView中更新它。

2 个答案:

答案 0 :(得分:2)

将新条目添加到数组中,然后在适配器上调用notifyDataSetChanged()以更新ListView

例如,您可以执行以下操作:

private void refreshListView(List<String> newEntries) {
    // yourList is the List that has the data for your adapter
    yourList.clear();
    yourList.addAll(newEntries);
    // yourListAdapter is the adapter for your ListView
    yourListAdapter.notifyDataSetChanged();
}

您可以在班级的任何地方调用此方法。

答案 1 :(得分:0)

尝试使用此

runOnUiThread (new Thread(new Runnable() { 
         public void run() {
            updateListview();
         }
     }));