diff --git a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/navi/NaviClient.java b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/navi/NaviClient.java index fdc169a284..cf27d3aff0 100644 --- a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/navi/NaviClient.java +++ b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/navi/NaviClient.java @@ -11,6 +11,7 @@ import com.mogo.map.impl.amap.utils.ObjectUtils; import com.mogo.map.navi.IMogoNavi; import com.mogo.map.navi.MogoCalculatePath; import com.mogo.map.navi.MogoNaviConfig; +import com.mogo.map.navi.OnCalculatePathItemClickInteraction; import com.mogo.utils.logger.Logger; import java.util.ArrayList; @@ -147,6 +148,21 @@ public class NaviClient implements IMogoNavi { return null; } + @Override + public OnCalculatePathItemClickInteraction getItemClickInteraction() { + if ( mAMapNaviListener != null ) { + return mAMapNaviListener.getItemClickInteraction(); + } + return null; + } + + @Override + public void setLineClickInteraction( OnCalculatePathItemClickInteraction lineClickInteraction ) { + if ( mAMapNaviListener != null ) { + mAMapNaviListener.setLineClickInteraction( lineClickInteraction ); + } + } + // -- end private boolean checkAMapNavi() { diff --git a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/navi/NaviListenerAdapter.java b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/navi/NaviListenerAdapter.java index 8797390c50..986f2af4ea 100644 --- a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/navi/NaviListenerAdapter.java +++ b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/navi/NaviListenerAdapter.java @@ -14,6 +14,7 @@ import com.mogo.map.impl.amap.message.AMapMessageManager; import com.mogo.map.impl.amap.utils.ObjectUtils; import com.mogo.map.navi.MogoCalculatePath; import com.mogo.map.navi.MogoNaviListenerHandler; +import com.mogo.map.navi.OnCalculatePathItemClickInteraction; import com.mogo.utils.logger.Logger; import java.util.List; @@ -165,4 +166,17 @@ public class NaviListenerAdapter extends AMapNaviListenerAdapter { } return null; } + + public OnCalculatePathItemClickInteraction getItemClickInteraction() { + if ( mNaviOverlayHelper != null ) { + return mNaviOverlayHelper.getItemClickInteraction(); + } + return null; + } + + public void setLineClickInteraction( OnCalculatePathItemClickInteraction lineClickInteraction ) { + if ( mNaviOverlayHelper != null ) { + mNaviOverlayHelper.setLineClickInteraction( lineClickInteraction ); + } + } } diff --git a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/navi/NaviOverlayHelper.java b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/navi/NaviOverlayHelper.java index 60c3e572a1..12f4c3cde6 100644 --- a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/navi/NaviOverlayHelper.java +++ b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/navi/NaviOverlayHelper.java @@ -16,6 +16,7 @@ import com.mogo.map.impl.amap.AMapWrapper; import com.mogo.map.impl.amap.R; import com.mogo.map.impl.amap.overlay.RouteOverLayWrapper; import com.mogo.map.navi.MogoCalculatePath; +import com.mogo.map.navi.OnCalculatePathItemClickInteraction; import com.mogo.utils.WindowUtils; import com.mogo.utils.logger.Logger; @@ -31,7 +32,7 @@ import java.util.TreeMap; *
* 导航路径管理
*/
-public class NaviOverlayHelper implements MogoCalculatePath.OnItemClickInteraction {
+public class NaviOverlayHelper implements OnCalculatePathItemClickInteraction {
private static final String TAG = "NaviOverlayHelper";
@@ -52,9 +53,11 @@ public class NaviOverlayHelper implements MogoCalculatePath.OnItemClickInteracti
private Rect mBoundRect = null;
private List< CalculatePathItem > mCalculatePathItems;
+ private List< MogoCalculatePath > mPaths = new ArrayList<>();
private int mSelectedPathId;
private CalculatePathItem mSelectedCalculatePathItem;
+ private OnCalculatePathItemClickInteraction mLineClickInteraction;
public NaviOverlayHelper( AMapNavi mAMapNavi, AMap mAMap, Context mContext ) {
this.mAMapNavi = mAMapNavi;
@@ -132,7 +135,7 @@ public class NaviOverlayHelper implements MogoCalculatePath.OnItemClickInteracti
mAMap.animateCamera( CameraUpdateFactory.newLatLngBoundsRect( bounds, mBoundRect.left, mBoundRect.right, mBoundRect.top, mBoundRect.bottom ) );
}
- private void checkAMapInstance(){
+ private void checkAMapInstance() {
if ( mAMap == null ) {
mAMap = AMapWrapper.getAMap();
}
@@ -174,6 +177,9 @@ public class NaviOverlayHelper implements MogoCalculatePath.OnItemClickInteracti
}
mCalculatePathItems.clear();
}
+ if ( mPaths != null ) {
+ mPaths.clear();
+ }
}
/**
@@ -186,6 +192,16 @@ public class NaviOverlayHelper implements MogoCalculatePath.OnItemClickInteracti
if ( polyline == null ) {
return false;
}
+ if ( mPaths != null && !mPaths.isEmpty() ) {
+ for ( MogoCalculatePath path : mPaths ) {
+ if ( TextUtils.equals( path.getTagId(), polyline.getId() ) ) {
+ if ( mLineClickInteraction != null ) {
+ mLineClickInteraction.onItemClicked( path.getTagId() );
+ break;
+ }
+ }
+ }
+ }
return handleClickedPolyline( polyline.getId() );
}
@@ -267,16 +283,15 @@ public class NaviOverlayHelper implements MogoCalculatePath.OnItemClickInteracti
public List< MogoCalculatePath > getCalculateStrategies() {
- List< MogoCalculatePath > paths = new ArrayList<>();
if ( mCalculatePathItems != null && !mCalculatePathItems.isEmpty() ) {
for ( CalculatePathItem calculatePathItem : mCalculatePathItems ) {
- MogoCalculatePath path = new MogoCalculatePath( this );
+ MogoCalculatePath path = new MogoCalculatePath();
path.setDistance( calculatePathItem.getDistance() );
path.setPathId( calculatePathItem.getId() );
path.setStrategyName( calculatePathItem.getStrategyName() );
path.setTime( calculatePathItem.getTime() );
path.setTrafficLights( calculatePathItem.getTrafficNumber() );
- paths.add( path );
+ mPaths.add( path );
final RouteOverLayWrapper wrapper = calculatePathItem.getOverLazWrapper( true );
if ( wrapper == null ) {
continue;
@@ -287,11 +302,20 @@ public class NaviOverlayHelper implements MogoCalculatePath.OnItemClickInteracti
path.setTagId( wrapper.getTrafficColorfulPolyline().getId() );
}
}
- return paths;
+ return mPaths;
}
@Override
public void onItemClicked( String tagId ) {
handleClickedPolyline( tagId );
+ mAMapNavi.selectRouteId( getSelectedPathId() );
+ }
+
+ public OnCalculatePathItemClickInteraction getItemClickInteraction() {
+ return this;
+ }
+
+ public void setLineClickInteraction( OnCalculatePathItemClickInteraction lineClickInteraction ) {
+ mLineClickInteraction = lineClickInteraction;
}
}
diff --git a/libraries/mogo-map-api/src/main/java/com/mogo/map/navi/IMogoNavi.java b/libraries/mogo-map-api/src/main/java/com/mogo/map/navi/IMogoNavi.java
index adb910084b..7b2a50b868 100644
--- a/libraries/mogo-map-api/src/main/java/com/mogo/map/navi/IMogoNavi.java
+++ b/libraries/mogo-map-api/src/main/java/com/mogo/map/navi/IMogoNavi.java
@@ -76,4 +76,17 @@ public interface IMogoNavi {
* @return 规划的路线
*/
List< MogoCalculatePath > getCalculatedStrategies();
+
+ /**
+ * 获取列表Item点击回调
+ *
+ * @return
+ */
+ OnCalculatePathItemClickInteraction getItemClickInteraction();
+
+
+ /**
+ * 设置线条点击回调
+ */
+ void setLineClickInteraction( OnCalculatePathItemClickInteraction itemClickInteraction );
}
diff --git a/libraries/mogo-map-api/src/main/java/com/mogo/map/navi/MogoCalculatePath.java b/libraries/mogo-map-api/src/main/java/com/mogo/map/navi/MogoCalculatePath.java
index aca3259c58..5c26ec925b 100644
--- a/libraries/mogo-map-api/src/main/java/com/mogo/map/navi/MogoCalculatePath.java
+++ b/libraries/mogo-map-api/src/main/java/com/mogo/map/navi/MogoCalculatePath.java
@@ -11,40 +11,34 @@ public class MogoCalculatePath {
/**
* 策略名称
*/
- public String mStrategyName;
+ private String mStrategyName;
/**
* 时间
*/
- public String mTime;
+ private String mTime;
/**
* 距离
*/
- public String mDistance;
+ private String mDistance;
/**
* 红绿灯个数
*/
- public int mTrafficLights;
+ private int mTrafficLights;
/**
* 路线ID,用于选择那一条线
*/
- public String mTagId;
+ private String mTagId;
/**
* 规划的线路ID
*/
- public int mPathId;
+ private int mPathId;
- /**
- * 点击事件
- */
- public OnItemClickInteraction mOnItemClickInteraction;
-
- public MogoCalculatePath( OnItemClickInteraction onItemClickInteraction ) {
- this.mOnItemClickInteraction = onItemClickInteraction;
+ public MogoCalculatePath() {
}
public String getStrategyName() {
@@ -80,7 +74,6 @@ public class MogoCalculatePath {
}
-
private StringBuilder mDescBuilder = null;
public String getDesc() {
@@ -112,13 +105,4 @@ public class MogoCalculatePath {
public void setPathId( int mPathId ) {
this.mPathId = mPathId;
}
-
- public interface OnItemClickInteraction {
-
- void onItemClicked( String tagId );
- }
-
- public OnItemClickInteraction getOnItemClickInteraction() {
- return mOnItemClickInteraction;
- }
}
diff --git a/libraries/mogo-map-api/src/main/java/com/mogo/map/navi/OnCalculatePathItemClickInteraction.java b/libraries/mogo-map-api/src/main/java/com/mogo/map/navi/OnCalculatePathItemClickInteraction.java
new file mode 100644
index 0000000000..44ba15b4a0
--- /dev/null
+++ b/libraries/mogo-map-api/src/main/java/com/mogo/map/navi/OnCalculatePathItemClickInteraction.java
@@ -0,0 +1,14 @@
+package com.mogo.map.navi;
+
+/**
+ * 规划路线交互接口
+ */
+public interface OnCalculatePathItemClickInteraction {
+
+ /**
+ * 点击:列表点击、线路点击
+ *
+ * @param tagId 线条ID
+ */
+ void onItemClicked( String tagId );
+}
\ No newline at end of file
diff --git a/libraries/mogo-map/src/main/java/com/mogo/map/MogoNavi.java b/libraries/mogo-map/src/main/java/com/mogo/map/MogoNavi.java
index 48be28d3a7..8b71b642ae 100644
--- a/libraries/mogo-map/src/main/java/com/mogo/map/MogoNavi.java
+++ b/libraries/mogo-map/src/main/java/com/mogo/map/MogoNavi.java
@@ -6,6 +6,7 @@ import com.mogo.map.impl.amap.navi.NaviClient;
import com.mogo.map.navi.IMogoNavi;
import com.mogo.map.navi.MogoCalculatePath;
import com.mogo.map.navi.MogoNaviConfig;
+import com.mogo.map.navi.OnCalculatePathItemClickInteraction;
import java.util.List;
@@ -104,4 +105,19 @@ public class MogoNavi implements IMogoNavi {
}
return null;
}
+
+ @Override
+ public OnCalculatePathItemClickInteraction getItemClickInteraction() {
+ if ( mDelegate != null ) {
+ return mDelegate.getItemClickInteraction();
+ }
+ return null;
+ }
+
+ @Override
+ public void setLineClickInteraction( OnCalculatePathItemClickInteraction itemClickInteraction ) {
+ if ( mDelegate != null ) {
+ mDelegate.setLineClickInteraction( itemClickInteraction );
+ }
+ }
}
diff --git a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppsFragment.java b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppsFragment.java
index ab3dab1cc5..0ac3a0fb11 100644
--- a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppsFragment.java
+++ b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppsFragment.java
@@ -99,4 +99,13 @@ public class AppsFragment extends MvpFragment< AppsView, AppsPresenter > impleme
mIndicator.setViewPager( mAppsPager );
mLoadingView.setVisibility( View.GONE );
}
+
+ @Override
+ public void onDestroyView() {
+ super.onDestroyView();
+ if ( mPresenter != null ) {
+ mPresenter.onDestroy( getViewLifecycleOwner() );
+ }
+ mPresenter = null;
+ }
}
diff --git a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppsPresenter.java b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppsPresenter.java
index cf5ff4e31b..8806e273f6 100644
--- a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppsPresenter.java
+++ b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppsPresenter.java
@@ -59,4 +59,9 @@ public class AppsPresenter extends Presenter< AppsView > {
}
}
+ @Override
+ public void onDestroy( @NonNull LifecycleOwner owner ) {
+ super.onDestroy( owner );
+ mView = null;
+ }
}
diff --git a/modules/mogo-module-apps/src/main/res/layout/module_apps_fragment_apps.xml b/modules/mogo-module-apps/src/main/res/layout/module_apps_fragment_apps.xml
index 4c20aba8b2..f112500208 100644
--- a/modules/mogo-module-apps/src/main/res/layout/module_apps_fragment_apps.xml
+++ b/modules/mogo-module-apps/src/main/res/layout/module_apps_fragment_apps.xml
@@ -29,6 +29,7 @@
android:id="@+id/module_apps_id_apps_pager"
android:layout_width="match_parent"
android:layout_height="match_parent"
+ android:overScrollMode="never"
android:layout_marginTop="@dimen/dp_210" />