mirror of
https://github.com/sudoxnym/habitica-android.git
synced 2026-07-13 09:48:20 +00:00
Add new Tasks / handler to reduce loadContent calls in the Adapter
This commit is contained in:
parent
ee48c6adfa
commit
3bfa4bb243
4 changed files with 73 additions and 14 deletions
|
|
@ -119,10 +119,10 @@ public class AddTaskDialog extends DialogFragment implements OnDateSetListener,
|
|||
|
||||
this.taskText.setText(text);
|
||||
Log.d("AddTaskDialog", "type=" + type);
|
||||
hType = type.equals(daily.toString()) ?
|
||||
daily : type.equals(reward.toString()) ?
|
||||
reward : type.equals(todo.toString()) ?
|
||||
todo : habit;
|
||||
hType = type.equals(daily.toString()) ? daily
|
||||
: type.equals(reward.toString()) ? reward
|
||||
: type.equals(todo.toString()) ? todo
|
||||
: habit;
|
||||
LinearLayout specialView = (LinearLayout) mainView.findViewById(R.id.repeat_days);
|
||||
if (hType == daily) {
|
||||
this.initializeSpecialButtons(specialView, mShortWeekDayStrings, repeat);
|
||||
|
|
|
|||
|
|
@ -19,7 +19,9 @@ import com.crashlytics.android.Crashlytics;
|
|||
import com.crashlytics.android.core.CrashlyticsCore;
|
||||
import com.github.florent37.materialviewpager.MaterialViewPager;
|
||||
import com.habitrpg.android.habitica.callbacks.HabitRPGUserCallback;
|
||||
import com.habitrpg.android.habitica.callbacks.TaskCreationCallback;
|
||||
import com.habitrpg.android.habitica.callbacks.TaskScoringCallback;
|
||||
import com.habitrpg.android.habitica.callbacks.TaskUpdateCallback;
|
||||
import com.habitrpg.android.habitica.events.*;
|
||||
import com.habitrpg.android.habitica.prefs.PrefsActivity;
|
||||
import com.habitrpg.android.habitica.ui.AvatarWithBarsViewModel;
|
||||
|
|
@ -64,7 +66,7 @@ import retrofit.client.Response;
|
|||
|
||||
public class MainActivity extends InstabugAppCompatActivity implements HabitRPGUserCallback.OnUserReceived,
|
||||
TaskScoringCallback.OnTaskScored, Callback<Void>, OnTaskCreationListener,
|
||||
FlowContentObserver.OnSpecificModelStateChangedListener {
|
||||
FlowContentObserver.OnSpecificModelStateChangedListener, TaskCreationCallback.OnHabitCreated, TaskUpdateCallback.OnHabitUpdated {
|
||||
static final int SETTINGS = 11;
|
||||
static final int ABOUT = 12;
|
||||
|
||||
|
|
@ -278,8 +280,8 @@ public class MainActivity extends InstabugAppCompatActivity implements HabitRPGU
|
|||
showSnackbar("LongPress: " + event.Task.text);
|
||||
}
|
||||
|
||||
public void onEvent(TodoCheckedEvent event){
|
||||
showSnackbar("ToDo Checked= "+event.ToDo.getText(), true);
|
||||
public void onEvent(TodoCheckedEvent event) {
|
||||
showSnackbar("ToDo Checked= " + event.ToDo.getText(), true);
|
||||
}
|
||||
|
||||
public void onEvent(HabitScoreEvent event) {
|
||||
|
|
@ -287,7 +289,12 @@ public class MainActivity extends InstabugAppCompatActivity implements HabitRPGU
|
|||
}
|
||||
|
||||
public void onEvent(AddTaskTappedEvent event) {
|
||||
showSnackbar("Add Task " + event.ClassType.getSimpleName());
|
||||
Bundle b = new Bundle();
|
||||
b.putString("type", event.ClassType.getSimpleName().toLowerCase());
|
||||
|
||||
AddTaskDialog dialog = new AddTaskDialog();
|
||||
dialog.setArguments(b);
|
||||
dialog.show(getSupportFragmentManager(), "AddTaskDialog");
|
||||
}
|
||||
|
||||
public void onEvent(BuyRewardTappedEvent event) {
|
||||
|
|
@ -537,7 +544,11 @@ public class MainActivity extends InstabugAppCompatActivity implements HabitRPGU
|
|||
|
||||
@Override
|
||||
public void onTaskCreation(HabitItem task, boolean editMode) {
|
||||
task.save();
|
||||
if (!editMode) {
|
||||
this.mAPIHelper.createUndefNewTask(task, new TaskCreationCallback(this));
|
||||
} else {
|
||||
this.mAPIHelper.uprateUndefinedTask(task, new TaskUpdateCallback(this));
|
||||
}
|
||||
|
||||
// TODO update task in list
|
||||
}
|
||||
|
|
@ -546,4 +557,26 @@ public class MainActivity extends InstabugAppCompatActivity implements HabitRPGU
|
|||
public void onTaskCreationFail(String message) {
|
||||
showSnackbar(message, true);
|
||||
}
|
||||
|
||||
// TaskCreationCallback
|
||||
@Override
|
||||
public void onTaskCreated(HabitItem habit) {
|
||||
habit.save();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onTaskCreationFail() {
|
||||
|
||||
}
|
||||
|
||||
// TaskUpdateCallback
|
||||
@Override
|
||||
public void onTaskUpdated(HabitItem habit) {
|
||||
habit.save();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onTaskUpdateFail() {
|
||||
|
||||
}
|
||||
}
|
||||
|
|
@ -2,8 +2,10 @@ package com.habitrpg.android.habitica.ui.adapter;
|
|||
|
||||
import android.content.Context;
|
||||
import android.databinding.DataBindingUtil;
|
||||
import android.os.Handler;
|
||||
import android.support.v7.widget.CardView;
|
||||
import android.support.v7.widget.RecyclerView;
|
||||
import android.util.Log;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
|
@ -53,6 +55,7 @@ public class HabitItemRecyclerViewAdapter<THabitItem extends HabitItem>
|
|||
|
||||
static final int TYPE_HEADER = 0;
|
||||
static final int TYPE_CELL = 1;
|
||||
private RecyclerView.Adapter<ViewHolder> parentAdapter;
|
||||
|
||||
|
||||
public HabitItemRecyclerViewAdapter(Class<THabitItem> newTaskClass, int layoutResource, Class<ViewHolder<THabitItem>> viewHolderClass, Context newContext) {
|
||||
|
|
@ -70,6 +73,11 @@ public class HabitItemRecyclerViewAdapter<THabitItem extends HabitItem>
|
|||
this.viewHolderClass = viewHolderClass;
|
||||
}
|
||||
|
||||
public void setParentAdapter(RecyclerView.Adapter<HabitItemRecyclerViewAdapter.ViewHolder> parentAdapter)
|
||||
{
|
||||
this.parentAdapter = parentAdapter;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onViewDetachedFromWindow(ViewHolder holder) {
|
||||
this.observer.unregisterForContentChanges(this.context);
|
||||
|
|
@ -125,10 +133,19 @@ public class HabitItemRecyclerViewAdapter<THabitItem extends HabitItem>
|
|||
holder.bindHolder(item, position);
|
||||
}
|
||||
|
||||
private Handler handler = new Handler();
|
||||
private Runnable reloadContentRunable = new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
Log.d("Reload Content","");
|
||||
loadContent();
|
||||
}
|
||||
};
|
||||
|
||||
@Override
|
||||
public void onModelStateChanged(Class<? extends Model> aClass, BaseModel.Action action, String s, String s1) {
|
||||
//TODO: Not load all content every time something changed
|
||||
this.loadContent();
|
||||
handler.removeCallbacks(reloadContentRunable);
|
||||
handler.postDelayed(reloadContentRunable, 200);
|
||||
}
|
||||
|
||||
public abstract class ViewHolder<THabitItem extends HabitItem> extends RecyclerView.ViewHolder implements View.OnClickListener, View.OnLongClickListener {
|
||||
|
|
@ -341,6 +358,14 @@ public class HabitItemRecyclerViewAdapter<THabitItem extends HabitItem>
|
|||
|
||||
public void loadContent() {
|
||||
this.contents = new Select().from(this.taskClass).queryList();
|
||||
notifyDataSetChanged();
|
||||
|
||||
if(parentAdapter != null)
|
||||
{
|
||||
parentAdapter.notifyDataSetChanged();
|
||||
}
|
||||
else
|
||||
{
|
||||
notifyDataSetChanged();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -36,9 +36,10 @@ public class TaskRecyclerViewFragment extends Fragment implements View.OnClickLi
|
|||
private RecyclerView.Adapter mAdapter;
|
||||
private Class<?> classType;
|
||||
|
||||
public void SetInnerAdapter(RecyclerView.Adapter adapter, Class<?> classType) {
|
||||
public void SetInnerAdapter(HabitItemRecyclerViewAdapter adapter, Class<?> classType) {
|
||||
this.classType = classType;
|
||||
mAdapter = new RecyclerViewMaterialAdapter(adapter);
|
||||
adapter.setParentAdapter(mAdapter);
|
||||
}
|
||||
|
||||
private View view;
|
||||
|
|
@ -92,7 +93,7 @@ public class TaskRecyclerViewFragment extends Fragment implements View.OnClickLi
|
|||
alreadyCreated = true;
|
||||
}
|
||||
|
||||
public static TaskRecyclerViewFragment newInstance(RecyclerView.Adapter adapter, Class<?> classType) {
|
||||
public static TaskRecyclerViewFragment newInstance(HabitItemRecyclerViewAdapter adapter, Class<?> classType) {
|
||||
TaskRecyclerViewFragment fragment = new TaskRecyclerViewFragment();
|
||||
|
||||
fragment.SetInnerAdapter(adapter, classType);
|
||||
|
|
|
|||
Loading…
Reference in a new issue