Last active
August 29, 2015 14:04
-
-
Save jpotts18/b8dc8a62331fada30862 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package com.mydietitian.md.activities.settings; | |
import android.os.Bundle; | |
import android.widget.Button; | |
import android.widget.ListView; | |
import android.widget.TextView; | |
import com.mydietitian.md.R; | |
import com.mydietitian.md.activities.AbstractActivity; | |
import com.mydietitian.md.adapter.ReminderAdapter; | |
import com.mydietitian.md.controller.ReminderController; | |
import com.mydietitian.md.controller.ReminderControllerListener; | |
import com.mydietitian.md.models.Reminder; | |
import java.util.List; | |
public class ReminderActivity extends AbstractActivity implements ReminderControllerListener { | |
List<Reminder> mReminderList = null; | |
ReminderAdapter mReminderAdapter; | |
ListView mListView; | |
public void onCreate(Bundle savedInstanceState) { | |
super.onCreate(savedInstanceState); | |
setContentView(R.layout.activity_reminder); | |
ReminderController reminderController = new ReminderController(this, this, mAuthHeader, mApiVersion); | |
mListView = (ListView) findViewById(R.id.activity_reminder_list); | |
setupNavBar(); | |
} | |
private void setupNavBar() { | |
TextView navTitle = (TextView) findViewById(R.id.nav_title); | |
navTitle.setText("REMINDERS"); | |
Button navButton = (Button) findViewById(R.id.nav_upload); | |
navButton.setText("New"); | |
} | |
// Click on an add button | |
// - Launch time picker | |
// - Send network request | |
// - Add to list | |
/// Listener callbacks | |
@Override | |
public void onReminderList(List<Reminder> reminders) { | |
mReminderList = reminders; | |
mReminderAdapter = new ReminderAdapter(this, R.layout.row_reminder, mReminderList); | |
mListView.setAdapter(mReminderAdapter); | |
} | |
@Override | |
public void onCreateReminder(Reminder reminder) { | |
mReminderList.add(reminder); | |
mReminderAdapter.notifyDataSetChanged(); | |
} | |
@Override | |
public void onUpdateReminder(Reminder reminder) { | |
// look through and see if it has changed and update that view | |
// would a map be a better data structure here? | |
} | |
@Override | |
public void onDeleteReminder(int reminderId) { | |
for(Reminder r: mReminderList){ | |
if (r.getId() == reminderId){ | |
mReminderList.remove(r); | |
} | |
} | |
} | |
@Override | |
public void onNetworkError() { launchNetworkingDialog(); } | |
@Override | |
public void noDataConnectionFound() { launchNetworkingDialog(); } | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package com.mydietitian.md.adapter; | |
import android.content.Context; | |
import android.view.LayoutInflater; | |
import android.view.View; | |
import android.view.ViewGroup; | |
import android.widget.BaseAdapter; | |
import android.widget.ImageView; | |
import android.widget.TextView; | |
import com.mydietitian.md.R; | |
import com.mydietitian.md.activities.settings.ReminderActivity; | |
import com.mydietitian.md.controller.ReminderController; | |
import com.mydietitian.md.models.Reminder; | |
import java.util.List; | |
public class ReminderAdapter extends BaseAdapter { | |
Context mContext; | |
List<Reminder> mReminderList; | |
int mLayoutResource; | |
ReminderController mReminderController; | |
public ReminderAdapter(Context context, int layoutResourceId, List<Reminder> reminderList, ReminderController reminderController) { | |
super(); | |
mContext = context; | |
mLayoutResource = layoutResourceId; | |
mReminderList = reminderList; | |
mReminderController = reminderController; | |
} | |
@Override | |
public int getCount() { | |
return mReminderList.size(); | |
} | |
@Override | |
public Reminder getItem(int i) { | |
return mReminderList.get(i); | |
} | |
@Override | |
public long getItemId(int i) { | |
return mReminderList.get(i).getId(); | |
} | |
@Override | |
public View getView(int i, View convertView, ViewGroup parent) { | |
if (convertView == null){ | |
LayoutInflater inflater = ((ReminderActivity) mContext).getLayoutInflater(); | |
convertView = inflater.inflate(mLayoutResource, parent, false); | |
} | |
final Reminder reminder = getItem(i); | |
TextView timeTxtView = (TextView) convertView.findViewById(R.id.reminder_text); | |
ImageView editReminder = (ImageView) convertView.findViewById(R.id.row_reminder_edit); | |
ImageView deleteReminder = (ImageView) convertView.findViewById(R.id.row_reminder_delete); | |
deleteReminder.setOnClickListener(new View.OnClickListener() { | |
@Override | |
public void onClick(View view) { | |
mReminderController.deleteReminder(reminder); | |
} | |
}); | |
timeTxtView.setText(reminder.getReadableTime()); | |
return convertView; | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package com.mydietitian.md.controller; | |
import android.content.Context; | |
import com.mydietitian.md.API; | |
import com.mydietitian.md.models.Reminder; | |
import com.mydietitian.md.utils.Network; | |
import com.mydietitian.md.utils.RestClient; | |
import java.util.List; | |
import retrofit.Callback; | |
import retrofit.RetrofitError; | |
import retrofit.client.Response; | |
public class ReminderController { | |
Context mContext; | |
ReminderControllerListener mListener; | |
String mAuthHeader; | |
String mApiVersion; | |
public ReminderController(Context context, ReminderControllerListener listener, String authHeader, String apiVersion) { | |
mContext = context; | |
mListener = listener; | |
mAuthHeader = authHeader; | |
mApiVersion = apiVersion; | |
// send a call to get all of the reminders on instantiation | |
getReminderList(); | |
} | |
public void getReminderList(){ | |
if (Network.isOnline(mContext)) { | |
RestClient.getInstance().getClient(API.class) | |
.getReminders(mAuthHeader, mApiVersion, new Callback<List<Reminder>>() { | |
@Override | |
public void success(List<Reminder> reminders, Response response) { | |
mListener.onReminderList(reminders); | |
} | |
@Override | |
public void failure(RetrofitError retrofitError) { | |
mListener.onNetworkError(); | |
} | |
}); | |
} else { | |
mListener.noDataConnectionFound(); | |
} | |
} | |
public void createReminder(Reminder reminder){ | |
if (Network.isOnline(mContext)){ | |
RestClient.getInstance().getClient(API.class) | |
.postReminders(mAuthHeader, mApiVersion, reminder, new Callback<Reminder>() { | |
@Override | |
public void success(Reminder reminder, Response response) { | |
mListener.onCreateReminder(reminder); | |
} | |
@Override | |
public void failure(RetrofitError retrofitError) { | |
mListener.onNetworkError(); | |
} | |
}); | |
} else { | |
mListener.noDataConnectionFound(); | |
} | |
} | |
public void updateReminder(Reminder reminder){ | |
if (Network.isOnline(mContext)){ | |
RestClient.getInstance().getClient(API.class) | |
.putReminder(mAuthHeader, mApiVersion, reminder.getId(), reminder, new Callback<Reminder>(){ | |
@Override | |
public void success(Reminder reminder, Response response) { | |
mListener.onUpdateReminder(reminder); | |
} | |
@Override | |
public void failure(RetrofitError retrofitError) { | |
mListener.onNetworkError(); | |
} | |
}); | |
} else { | |
mListener.noDataConnectionFound(); | |
} | |
} | |
public void deleteReminder(Reminder reminder){ | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment