我有成员变量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中更新它。
答案 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();
}
}));