我搜索的“颐和园”的数据,执行onGetPoiResult方法 @Override public void onGetPoiResult(final PoiResult result) { // 获取poi结果 mAllPoi = result.getAllPoi(); if (mAllPoi != null) { dataType = "poiList"; page = "select_poi"; operate = "search_data"; SyncBackUtil.reportPoiListData(mAllPoi, foregroundStatus, operate, page, dataType); } } 上报数据后,我再次搜索颐和园,没有执行onGetPoiResult方法,我想让它搜索同样的数据时也执行onGetPoiResult方法,要出现数据列表
时间: 2024-02-14 07:25:07 浏览: 16
您可以考虑使用缓存的方式来实现在多次搜索相同数据时也执行`onGetPoiResult`方法并展示数据列表。
首先,您可以定义一个变量来缓存上一次搜索的结果:
```java
private PoiResult lastSearchResult;
```
然后,在`onGetPoiResult`方法中,将当前搜索结果赋值给`lastSearchResult`:
```java
@Override
public void onGetPoiResult(final PoiResult result) {
// 获取poi结果
mAllPoi = result.getAllPoi();
if (mAllPoi != null) {
dataType = "poiList";
page = "select_poi";
operate = "search_data";
SyncBackUtil.reportPoiListData(mAllPoi, foregroundStatus, operate, page, dataType);
lastSearchResult = result;
}
}
```
接下来,在执行新的搜索时,先检查缓存的`lastSearchResult`是否存在,如果存在,则直接使用缓存的结果并执行`onGetPoiResult`方法:
```java
private void searchPoi(String keyword) {
if (lastSearchResult != null) {
onGetPoiResult(lastSearchResult);
} else {
// 执行新的搜索逻辑
// ...
}
}
```
这样,当再次搜索相同的数据时,就会直接使用缓存的结果并执行`onGetPoiResult`方法,从而展示数据列表。注意,如果需要刷新缓存的结果,可以在合适的时机将`lastSearchResult`置为`null`。