New touch listener on the drag handle icon to start dragging items on short touch

This commit is contained in:
2016-01-12 17:05:48 -05:00
parent c8e7a9052d
commit 96b054cea1
3 changed files with 27 additions and 5 deletions

View File

@@ -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 {

View File

@@ -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);

View File

@@ -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);
}