case R.id.route_2: if (isDataLoaded) { mLayoutTab0.setSelected(false); mLayoutTab1.setSelected(false); mLayoutTab2.setSelected(true); interruptCountdown(); BaiduNaviManagerFactory.getRouteResultManager().selectRoute(2); BaiduNaviManagerFactory.getRouteResultManager().fullView(); mRouteList.clear(); mRouteList.addAll(mRouteDetails.get(2)); mResultAdapter.notifyItemChanged(2); break; 以上代码在数据还没有设置上去的时候,用户点击会导致程序崩溃,我的想法是在数据加载完成后设置一个boolean值isDataLoaded=true; 然后判断if(isDataLoaded)就做取消倒计时一些操作,else就写mLayoutTab2.setEnabled(false);在数据为空的时候点击它无效, 但是,为空的时候点击无效后,有数据了我再次去点击它,就没有反应了,请帮我解决一下。修改一下代码逻辑
时间: 2023-07-16 14:17:12 浏览: 80
可以在数据加载完成后,将isDataLoaded设置为true,并且在点击事件中判断isDataLoaded是否为true,如果为true则执行相应操作,否则不执行任何操作。
修改后的代码如下:
```
private boolean isDataLoaded = false;
...
// 数据加载完成后设置isDataLoaded为true
isDataLoaded = true;
...
case R.id.route_2:
if (isDataLoaded) {
mLayoutTab0.setSelected(false);
mLayoutTab1.setSelected(false);
mLayoutTab2.setSelected(true);
interruptCountdown();
BaiduNaviManagerFactory.getRouteResultManager().selectRoute(2);
BaiduNaviManagerFactory.getRouteResultManager().fullView();
mRouteList.clear();
mRouteList.addAll(mRouteDetails.get(2));
mResultAdapter.notifyItemChanged(2);
} else {
mLayoutTab2.setEnabled(false);
}
break;
```
阅读全文