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"
|
||||
minSdkVersion 15
|
||||
targetSdkVersion 23
|
||||
versionCode 5
|
||||
versionName "0.5"
|
||||
versionCode 6
|
||||
versionName "0.6"
|
||||
}
|
||||
buildTypes {
|
||||
release {
|
||||
|
@@ -1,11 +1,14 @@
|
||||
package com.wismna.geoffroy.donext.adapters;
|
||||
|
||||
import android.support.v4.view.MotionEventCompat;
|
||||
import android.support.v7.widget.RecyclerView;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.MotionEvent;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.Button;
|
||||
import android.widget.EditText;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.wismna.geoffroy.donext.R;
|
||||
@@ -26,6 +29,7 @@ public class TaskListRecyclerViewAdapter extends RecyclerView.Adapter<TaskListRe
|
||||
void onNameChangeFocus(TaskList taskList);
|
||||
void onClickDeleteButton(int position, long id);
|
||||
void onItemMove(long fromTaskId, long toTaskId, int fromPosition, int toPosition);
|
||||
void onStartDrag(RecyclerView.ViewHolder viewHolder);
|
||||
}
|
||||
|
||||
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.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
|
||||
holder.mTaskNameView.setOnFocusChangeListener(new View.OnFocusChangeListener() {
|
||||
@Override
|
||||
@@ -65,7 +80,6 @@ public class TaskListRecyclerViewAdapter extends RecyclerView.Adapter<TaskListRe
|
||||
}
|
||||
});
|
||||
|
||||
// TODO: add confirmation dialog
|
||||
// Handle click on delete button
|
||||
holder.mTaskDeleteButton.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
@@ -122,6 +136,7 @@ public class TaskListRecyclerViewAdapter extends RecyclerView.Adapter<TaskListRe
|
||||
|
||||
public class ViewHolder extends RecyclerView.ViewHolder {
|
||||
public final View mView;
|
||||
public final ImageView handleView;
|
||||
public final TextView mTaskCountView;
|
||||
public final TextView mTaskNameView;
|
||||
public final Button mTaskDeleteButton;
|
||||
@@ -130,6 +145,7 @@ public class TaskListRecyclerViewAdapter extends RecyclerView.Adapter<TaskListRe
|
||||
public ViewHolder(View view) {
|
||||
super(view);
|
||||
mView = view;
|
||||
handleView = (ImageView) itemView.findViewById(R.id.handle);
|
||||
mTaskCountView = (TextView) view.findViewById(R.id.task_list_count);
|
||||
mTaskNameView = (TextView) view.findViewById(R.id.task_list_name);
|
||||
mTaskDeleteButton = (Button) view.findViewById(R.id.task_list_delete);
|
||||
|
@@ -35,6 +35,7 @@ public class TaskListsFragment extends Fragment implements
|
||||
private TaskListRecyclerViewAdapter taskListRecyclerViewAdapter;
|
||||
private TaskListDataAccess taskListDataAccess;
|
||||
private View mView;
|
||||
private ItemTouchHelper mItemTouchHelper;
|
||||
|
||||
/**
|
||||
* Mandatory empty constructor for the fragment manager to instantiate the
|
||||
@@ -150,6 +151,11 @@ public class TaskListsFragment extends Fragment implements
|
||||
taskListDataAccess.updateOrder(toTaskId, fromPosition);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onStartDrag(RecyclerView.ViewHolder viewHolder) {
|
||||
mItemTouchHelper.startDrag(viewHolder);
|
||||
}
|
||||
|
||||
private void deleteTaskList(int position, long id)
|
||||
{
|
||||
taskListRecyclerViewAdapter.remove(position);
|
||||
@@ -178,8 +184,8 @@ public class TaskListsFragment extends Fragment implements
|
||||
|
||||
// Set the Touch Helper
|
||||
ItemTouchHelper.Callback callback = new TaskListTouchHelper(taskListRecyclerViewAdapter);
|
||||
ItemTouchHelper helper = new ItemTouchHelper(callback);
|
||||
helper.attachToRecyclerView(recyclerView);
|
||||
mItemTouchHelper = new ItemTouchHelper(callback);
|
||||
mItemTouchHelper.attachToRecyclerView(recyclerView);
|
||||
|
||||
toggleVisibleCreateNewTaskListLayout(mView);
|
||||
}
|
||||
|
Reference in New Issue
Block a user