mirror of
https://github.com/wismna/DoNext.git
synced 2025-10-03 15:40:14 -04:00
New touch listener on the drag handle icon to start dragging items on short touch
This commit is contained in:
@@ -8,8 +8,8 @@ android {
|
|||||||
applicationId "com.wismna.geoffroy.donext"
|
applicationId "com.wismna.geoffroy.donext"
|
||||||
minSdkVersion 15
|
minSdkVersion 15
|
||||||
targetSdkVersion 23
|
targetSdkVersion 23
|
||||||
versionCode 5
|
versionCode 6
|
||||||
versionName "0.5"
|
versionName "0.6"
|
||||||
}
|
}
|
||||||
buildTypes {
|
buildTypes {
|
||||||
release {
|
release {
|
||||||
|
@@ -1,11 +1,14 @@
|
|||||||
package com.wismna.geoffroy.donext.adapters;
|
package com.wismna.geoffroy.donext.adapters;
|
||||||
|
|
||||||
|
import android.support.v4.view.MotionEventCompat;
|
||||||
import android.support.v7.widget.RecyclerView;
|
import android.support.v7.widget.RecyclerView;
|
||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
||||||
|
import android.view.MotionEvent;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.ViewGroup;
|
import android.view.ViewGroup;
|
||||||
import android.widget.Button;
|
import android.widget.Button;
|
||||||
import android.widget.EditText;
|
import android.widget.EditText;
|
||||||
|
import android.widget.ImageView;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
|
|
||||||
import com.wismna.geoffroy.donext.R;
|
import com.wismna.geoffroy.donext.R;
|
||||||
@@ -26,6 +29,7 @@ public class TaskListRecyclerViewAdapter extends RecyclerView.Adapter<TaskListRe
|
|||||||
void onNameChangeFocus(TaskList taskList);
|
void onNameChangeFocus(TaskList taskList);
|
||||||
void onClickDeleteButton(int position, long id);
|
void onClickDeleteButton(int position, long id);
|
||||||
void onItemMove(long fromTaskId, long toTaskId, int fromPosition, int toPosition);
|
void onItemMove(long fromTaskId, long toTaskId, int fromPosition, int toPosition);
|
||||||
|
void onStartDrag(RecyclerView.ViewHolder viewHolder);
|
||||||
}
|
}
|
||||||
|
|
||||||
private final List<TaskList> mValues;
|
private final List<TaskList> mValues;
|
||||||
@@ -49,6 +53,17 @@ public class TaskListRecyclerViewAdapter extends RecyclerView.Adapter<TaskListRe
|
|||||||
holder.mTaskCountView.setText(String.valueOf(mValues.get(position).getTaskCount()));
|
holder.mTaskCountView.setText(String.valueOf(mValues.get(position).getTaskCount()));
|
||||||
holder.mTaskNameView.setText(mValues.get(position).getName());
|
holder.mTaskNameView.setText(mValues.get(position).getName());
|
||||||
|
|
||||||
|
holder.handleView.setOnTouchListener(new View.OnTouchListener() {
|
||||||
|
@Override
|
||||||
|
public boolean onTouch(View v, MotionEvent event) {
|
||||||
|
if (MotionEventCompat.getActionMasked(event) ==
|
||||||
|
MotionEvent.ACTION_DOWN) {
|
||||||
|
mListener.onStartDrag(holder);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
// Handle inline name change
|
// Handle inline name change
|
||||||
holder.mTaskNameView.setOnFocusChangeListener(new View.OnFocusChangeListener() {
|
holder.mTaskNameView.setOnFocusChangeListener(new View.OnFocusChangeListener() {
|
||||||
@Override
|
@Override
|
||||||
@@ -65,7 +80,6 @@ public class TaskListRecyclerViewAdapter extends RecyclerView.Adapter<TaskListRe
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
// TODO: add confirmation dialog
|
|
||||||
// Handle click on delete button
|
// Handle click on delete button
|
||||||
holder.mTaskDeleteButton.setOnClickListener(new View.OnClickListener() {
|
holder.mTaskDeleteButton.setOnClickListener(new View.OnClickListener() {
|
||||||
@Override
|
@Override
|
||||||
@@ -122,6 +136,7 @@ public class TaskListRecyclerViewAdapter extends RecyclerView.Adapter<TaskListRe
|
|||||||
|
|
||||||
public class ViewHolder extends RecyclerView.ViewHolder {
|
public class ViewHolder extends RecyclerView.ViewHolder {
|
||||||
public final View mView;
|
public final View mView;
|
||||||
|
public final ImageView handleView;
|
||||||
public final TextView mTaskCountView;
|
public final TextView mTaskCountView;
|
||||||
public final TextView mTaskNameView;
|
public final TextView mTaskNameView;
|
||||||
public final Button mTaskDeleteButton;
|
public final Button mTaskDeleteButton;
|
||||||
@@ -130,6 +145,7 @@ public class TaskListRecyclerViewAdapter extends RecyclerView.Adapter<TaskListRe
|
|||||||
public ViewHolder(View view) {
|
public ViewHolder(View view) {
|
||||||
super(view);
|
super(view);
|
||||||
mView = view;
|
mView = view;
|
||||||
|
handleView = (ImageView) itemView.findViewById(R.id.handle);
|
||||||
mTaskCountView = (TextView) view.findViewById(R.id.task_list_count);
|
mTaskCountView = (TextView) view.findViewById(R.id.task_list_count);
|
||||||
mTaskNameView = (TextView) view.findViewById(R.id.task_list_name);
|
mTaskNameView = (TextView) view.findViewById(R.id.task_list_name);
|
||||||
mTaskDeleteButton = (Button) view.findViewById(R.id.task_list_delete);
|
mTaskDeleteButton = (Button) view.findViewById(R.id.task_list_delete);
|
||||||
|
@@ -35,6 +35,7 @@ public class TaskListsFragment extends Fragment implements
|
|||||||
private TaskListRecyclerViewAdapter taskListRecyclerViewAdapter;
|
private TaskListRecyclerViewAdapter taskListRecyclerViewAdapter;
|
||||||
private TaskListDataAccess taskListDataAccess;
|
private TaskListDataAccess taskListDataAccess;
|
||||||
private View mView;
|
private View mView;
|
||||||
|
private ItemTouchHelper mItemTouchHelper;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Mandatory empty constructor for the fragment manager to instantiate the
|
* Mandatory empty constructor for the fragment manager to instantiate the
|
||||||
@@ -150,6 +151,11 @@ public class TaskListsFragment extends Fragment implements
|
|||||||
taskListDataAccess.updateOrder(toTaskId, fromPosition);
|
taskListDataAccess.updateOrder(toTaskId, fromPosition);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onStartDrag(RecyclerView.ViewHolder viewHolder) {
|
||||||
|
mItemTouchHelper.startDrag(viewHolder);
|
||||||
|
}
|
||||||
|
|
||||||
private void deleteTaskList(int position, long id)
|
private void deleteTaskList(int position, long id)
|
||||||
{
|
{
|
||||||
taskListRecyclerViewAdapter.remove(position);
|
taskListRecyclerViewAdapter.remove(position);
|
||||||
@@ -178,8 +184,8 @@ public class TaskListsFragment extends Fragment implements
|
|||||||
|
|
||||||
// Set the Touch Helper
|
// Set the Touch Helper
|
||||||
ItemTouchHelper.Callback callback = new TaskListTouchHelper(taskListRecyclerViewAdapter);
|
ItemTouchHelper.Callback callback = new TaskListTouchHelper(taskListRecyclerViewAdapter);
|
||||||
ItemTouchHelper helper = new ItemTouchHelper(callback);
|
mItemTouchHelper = new ItemTouchHelper(callback);
|
||||||
helper.attachToRecyclerView(recyclerView);
|
mItemTouchHelper.attachToRecyclerView(recyclerView);
|
||||||
|
|
||||||
toggleVisibleCreateNewTaskListLayout(mView);
|
toggleVisibleCreateNewTaskListLayout(mView);
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user