Skip to content

Instantly share code, notes, and snippets.

@jpotts18
Last active August 29, 2015 14:04
Show Gist options
  • Save jpotts18/b8dc8a62331fada30862 to your computer and use it in GitHub Desktop.
Save jpotts18/b8dc8a62331fada30862 to your computer and use it in GitHub Desktop.
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(); }
}
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;
}
}
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