This commit is contained in:
wangcongtao
2020-02-12 12:07:11 +08:00
parent 4eeea9e5d1
commit 9f7921e50f
10 changed files with 321 additions and 164 deletions

View File

@@ -0,0 +1,44 @@
package com.mogo.module.tanlu.callback;
import com.mogo.service.datamanager.IMogoDataChangedListener;
/**
* @author congtaowang
* @since 2020-02-12
* <p>
* 描述
*/
public class DataSetChangedAdapter implements IMogoDataChangedListener {
private Object mData;
private DataSetChangedAdapter(){
// private constructor
}
private static final class InstanceHolder{
private static final DataSetChangedAdapter INSTANCE = new DataSetChangedAdapter();
}
private IMogoDataChangedListener mDelegate;
public void setDelegate( IMogoDataChangedListener delegate ) {
this.mDelegate = delegate;
}
public static DataSetChangedAdapter getInstance(){
return InstanceHolder.INSTANCE;
}
@Override
public void onDataSetChanged( Object data ) {
mData = data;
if ( mDelegate != null ) {
mDelegate.onDataSetChanged( data );
}
}
public Object getData() {
return mData;
}
}

View File

@@ -55,6 +55,7 @@ import com.mogo.module.common.entity.MarkerUserInfo;
import com.mogo.module.service.receiver.MogoReceiver;
import com.mogo.module.share.ShareControl;
import com.mogo.module.tanlu.R;
import com.mogo.module.tanlu.callback.DataSetChangedAdapter;
import com.mogo.module.tanlu.callback.NaviCallback;
import com.mogo.module.tanlu.callback.RoadLineCallback;
import com.mogo.module.tanlu.callback.UploadShareCallback;
@@ -77,6 +78,8 @@ import com.mogo.module.tanlu.view.AutoZoomInImageView;
import com.mogo.service.MogoServicePaths;
import com.mogo.service.analytics.IMogoAnalytics;
import com.mogo.service.cardmanager.IMogoCardManager;
import com.mogo.service.datamanager.IMogoDataChangedListener;
import com.mogo.service.datamanager.IMogoDataManager;
import com.mogo.service.fragmentmanager.IMogoFragmentManager;
import com.mogo.service.imageloader.IMogoImageLoaderListener;
import com.mogo.service.imageloader.IMogoImageloader;
@@ -117,7 +120,8 @@ public class TanluCardViewFragment extends MvpFragment<IView, Presenter<IView>>
IMogoMapListener,
IMogoPoiSearchListener,
IMogoLocationListener,
View.OnClickListener {
View.OnClickListener,
IMogoDataChangedListener {
private static final String TAG = "TanluCardViewFragment";
SimpleCoverVideoPlayer simpleCoverVideoPlayer;
@@ -295,6 +299,7 @@ public class TanluCardViewFragment extends MvpFragment<IView, Presenter<IView>>
}
}
});
DataSetChangedAdapter.getInstance().setDelegate( this );
}
@Override
@@ -307,6 +312,8 @@ public class TanluCardViewFragment extends MvpFragment<IView, Presenter<IView>>
initMap();
initStrings();
initListener();
// 数据先到,卡片后创建
initData( DataSetChangedAdapter.getInstance().getData() );
}
private void initModelData() {
@@ -744,23 +751,20 @@ public class TanluCardViewFragment extends MvpFragment<IView, Presenter<IView>>
isCurrentPage = true;
Logger.d(TAG, "tanlu卡片 onPerform 有效 ---->");
mMarkerManager = mMogoMapService.getMarkerManager(getActivity());
List<IMogoMarker> markers = mMarkerManager.getMarkers(TanluConstants.MODEL_NAME);
renderCardViews();
}
if (markers != null && markers.size() > 0) {
/**
* 根究数据展示页面
*/
private void renderCardViews(){
if (markerExploreWayList != null && markerExploreWayList.size() > 0) {
mEmptyLayout.setVisibility(View.GONE);
mRootLayout.setVisibility(View.VISIBLE);
Logger.d(TAG, "onPerform markers.size() =" + markers.size());
for (int i = 0; i < markers.size(); i++) {
MarkerExploreWay exploreWay = extractFromMarker(markers.get(i));
if (exploreWay == null) {
break;
}
markerExploreWayList.add(exploreWay);
}
Logger.d(TAG, "onPerform markers.size() =" + markerExploreWayList.size());
Log.d("TAG", "tanlu卡片 onPerform 有效 markerExploreWayList.size() =" + markerExploreWayList.size());
if (markers.size() == 1) {
if (markerExploreWayList.size() == 1) {
mPreviousTv.setVisibility(View.GONE);
mNextTv.setVisibility(View.GONE);
} else {
@@ -778,6 +782,28 @@ public class TanluCardViewFragment extends MvpFragment<IView, Presenter<IView>>
}
}
@Override
public void onDataSetChanged( Object data ) {
Logger.d( TAG, "receive data changed." );
initData( data );
if ( isCurrentPage ) {
renderCardViews();
}
}
private void initData(Object data ){
if ( markerExploreWayList != null ) {
markerExploreWayList.clear();
} else {
markerExploreWayList = new ArrayList<>();
}
try {
markerExploreWayList.addAll( (List<MarkerExploreWay>)data );
} catch ( Exception e ) {
Logger.e( TAG, e, "error." );
}
}
/**
* 离开C位事件
*/

View File

@@ -11,6 +11,7 @@ import com.mogo.map.listener.IMogoMapListener;
import com.mogo.map.location.IMogoLocationListener;
import com.mogo.map.marker.IMogoMarkerClickListener;
import com.mogo.map.navi.IMogoNaviListener;
import com.mogo.module.tanlu.callback.DataSetChangedAdapter;
import com.mogo.service.module.IMogoModuleLifecycle;
import com.mogo.service.module.IMogoModuleProvider;
import com.mogo.service.module.ModuleType;
@@ -40,6 +41,7 @@ public class TanluCardViewProvider implements IMogoModuleProvider {
@Override
public void init( Context context ) {
TanluServiceHandler.init( context );
TanluServiceHandler.getDataManager().registerDataListener( TanluConstants.MODEL_NAME, DataSetChangedAdapter.getInstance() );
Logger.d(TAG, "init ----------> ");
}

View File

@@ -10,6 +10,8 @@ import com.mogo.map.search.poisearch.IMogoPoiSearch;
import com.mogo.map.search.poisearch.query.MogoPoiSearchQuery;
import com.mogo.map.uicontroller.IMogoMapUIController;
import com.mogo.service.MogoServicePaths;
import com.mogo.service.datamanager.IMogoDataChangedListener;
import com.mogo.service.datamanager.IMogoDataManager;
import com.mogo.service.imageloader.IMogoImageloader;
import com.mogo.service.map.IMogoMapService;
@@ -28,6 +30,7 @@ public class TanluServiceHandler {
private static IMogoNavi mNavi;
private static IMogoMapUIController mMapUIController;
private static IMogoImageloader mImageloader;
private static IMogoDataManager mDataManager;
public static void init( Context context ) {
mMapService = ( IMogoMapService ) ARouter.getInstance().build( MogoServicePaths.PATH_SERVICES_MAP ).navigation( context );
@@ -38,6 +41,7 @@ public class TanluServiceHandler {
mMarkerManager = mMapService.getMarkerManager( context );
mNavi = mMapService.getNavi( context );
mMapUIController = mMapService.getMapUIController();
mDataManager = (IMogoDataManager)ARouter.getInstance().build( MogoServicePaths.PATH_DATA_MANAGER ).navigation(context);
}
public static IMogoMapService getMapService() {
@@ -67,4 +71,8 @@ public class TanluServiceHandler {
public static IMogoImageloader getImageloader() {
return mImageloader;
}
public static IMogoDataManager getDataManager() {
return mDataManager;
}
}