fragment will be updated, if new marks are available

This commit is contained in:
Peter Siegmund committed 2016-11-30 12:10:28 +01:00
1 parent e691bca866
commit e9300713ce
4 files changed
+26 -38

No files matched your search

@@ -8,7 +8,6 @@ import com.sap.sailing.android.buoy.positioning.app.R;
import com.sap.sailing.android.buoy.positioning.app.util.CheckinManager;
import com.sap.sailing.android.buoy.positioning.app.util.DatabaseHelper;
import com.sap.sailing.android.buoy.positioning.app.valueobjects.CheckinData;
import com.sap.sailing.android.shared.data.BaseCheckinData;
public class MarkerService extends IntentService implements CheckinManager.DataChangedListner{
private static String TAG = MarkerService.class.getName();
@@ -26,7 +25,7 @@ public class MarkerService extends IntentService implements CheckinManager.Data
}
@Override
public void handleData(BaseCheckinData data) {
public void handleData(CheckinData data) {
if (data != null) {
try {
CheckinData checkinData = (CheckinData) data;
@@ -45,7 +45,6 @@ public class RegattaActivity extends AbstractRegattaActivity {
prefs.setLastScannedQRCode(null);
Intent intent = getIntent();
checkinDigest = intent.getStringExtra(getString(R.string.checkin_digest));
leaderboardName = intent.getStringExtra(getString(R.string.leaderboard_name));
@@ -68,8 +67,7 @@ public class RegattaActivity extends AbstractRegattaActivity {
toolbar.setNavigationIcon(R.drawable.sap_logo_64dp);
getSupportActionBar().setTitle(leaderboardName);
}
RegattaFragment regattaFragment = new RegattaFragment();
replaceFragment(R.id.content_frame, regattaFragment);
replaceFragment(R.id.content_frame, RegattaFragment.newInstance());
MarkerUtils.withContext(this).startMarkerService(checkinUrl);
}
@@ -147,11 +145,10 @@ public class RegattaActivity extends AbstractRegattaActivity {
@Override
public void onCheckinDataAvailable(BaseCheckinData checkinData) {
if (checkinData != null) {
if (checkinData != null && checkinData instanceof CheckinData) {
CheckinData data = (CheckinData) checkinData;
try {
DatabaseHelper.getInstance().updateMarks(this, data.marks, data.getLeaderboard());
getRegattaFragment().getAdapter().notifyDataSetChanged();
} catch (DatabaseHelper.GeneralDatabaseHelperException e) {
ExLog.e(this, TAG, "Batch insert failed: " + e.getMessage());
displayDatabaseError();
@@ -189,10 +186,6 @@ public class RegattaActivity extends AbstractRegattaActivity {
return checkinDigest;
}
public RegattaFragment getRegattaFragment() {
return (RegattaFragment) getSupportFragmentManager().findFragmentById(R.id.content_frame);
}
/**
* Defines callbacks for service binding, passed to bindService()
*/
@@ -33,18 +33,26 @@ public class RegattaFragment extends BaseFragment implements LoaderCallbacks<Cur
private MarkAdapter adapter;
private IntentReceiver mReceiver;
public static RegattaFragment newInstance() {
Bundle args = new Bundle();
RegattaFragment fragment = new RegattaFragment();
fragment.setArguments(args);
return fragment;
}
@SuppressLint("InflateParams")
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
super.onCreateView(inflater, container, savedInstanceState);
mReceiver = new IntentReceiver();
View view = inflater.inflate(R.layout.fragment_buoy_postion_overview, container, false);
adapter = new MarkAdapter(getActivity(), R.layout.mark_listview_row, null, 0);
ListView markListView = (ListView) view.findViewById(R.id.listMarks);
markListView.setEmptyView(view.findViewById(R.id.no_marks));
markListView.setAdapter(adapter);
markListView.setOnItemClickListener(new ItemClickListener());
getLoaderManager().initLoader(MARKER_LOADER, null, this);
return view;
}
@@ -52,26 +60,28 @@ public class RegattaFragment extends BaseFragment implements LoaderCallbacks<Cur
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
mReceiver = new IntentReceiver(this);
}
@Override
public void onResume() {
super.onResume();
getLoaderManager().restartLoader(MARKER_LOADER, null, this);
IntentFilter filter = new IntentFilter();
filter.addAction(getString(R.string.database_changed));
LocalBroadcastManager.getInstance(getActivity().getApplicationContext()).registerReceiver(mReceiver, filter);
LocalBroadcastManager.getInstance(getActivity()).registerReceiver(mReceiver, filter);
loadData();
}
@Override
public void onPause() {
super.onPause();
LocalBroadcastManager.getInstance(getActivity().getApplicationContext()).unregisterReceiver(mReceiver);
LocalBroadcastManager.getInstance(getActivity()).unregisterReceiver(mReceiver);
}
public MarkAdapter getAdapter() {
return adapter;
public void loadData() {
getLoaderManager().restartLoader(MARKER_LOADER, null, this);
}
@Override
@@ -126,19 +136,12 @@ public class RegattaFragment extends BaseFragment implements LoaderCallbacks<Cur
// Broadcast receiver to update ui on data changed
private class IntentReceiver extends BroadcastReceiver {
private LoaderCallbacks<Cursor> loaderCallbacks;
public IntentReceiver(LoaderCallbacks<Cursor> callbacks) {
loaderCallbacks = callbacks;
}
@Override
public void onReceive(Context context, Intent intent) {
Log.d(TAG, "Adapter will be notified");
String action = intent.getAction();
if (action.equals(getString(R.string.database_changed))) {
getLoaderManager().restartLoader(MARKER_LOADER, null, loaderCallbacks);
adapter.notifyDataSetChanged();
loadData();
}
}
}
@@ -26,7 +26,6 @@ import com.sap.sailing.android.buoy.positioning.app.R;
import com.sap.sailing.android.buoy.positioning.app.valueobjects.CheckinData;
import com.sap.sailing.android.buoy.positioning.app.valueobjects.MarkInfo;
import com.sap.sailing.android.buoy.positioning.app.valueobjects.MarkPingInfo;
import com.sap.sailing.android.shared.data.BaseCheckinData;
import com.sap.sailing.android.shared.data.http.HttpGetRequest;
import com.sap.sailing.android.shared.logging.ExLog;
import com.sap.sailing.android.shared.ui.activities.CheckinDataActivity;
@@ -49,7 +48,6 @@ import com.sap.sailing.server.gateway.serialization.impl.MarkJsonSerializerWithP
public class CheckinManager {
private final static String TAG = CheckinManager.class.getName();
private BaseCheckinData checkinData;
private final CheckinDataActivity activity;
private final Context mContext;
private final AppPreferences prefs;
@@ -263,25 +261,20 @@ public class CheckinManager {
}
}
public void setCheckinData(BaseCheckinData data) {
checkinData = data;
private void setCheckinData(CheckinData data) {
if (activity != null) {
activity.onCheckinDataAvailable(getCheckinData());
activity.onCheckinDataAvailable(data);
} else if (dataChangedListner != null){
dataChangedListner.handleData(data);
}
}
public interface DataChangedListner{
void handleData(BaseCheckinData data);
void handleData(CheckinData data);
}
public void setDataChangedListner(DataChangedListner listner){
dataChangedListner = listner;
}
public BaseCheckinData getCheckinData() {
return checkinData;
public void setDataChangedListner(DataChangedListner listener){
dataChangedListner = listener;
}
/**