diff options
| -rw-r--r-- | packages/DocumentsUI/src/com/android/documentsui/DirectoryFragment.java | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/packages/DocumentsUI/src/com/android/documentsui/DirectoryFragment.java b/packages/DocumentsUI/src/com/android/documentsui/DirectoryFragment.java index b7a3e4bcd9ab..edf829d178c9 100644 --- a/packages/DocumentsUI/src/com/android/documentsui/DirectoryFragment.java +++ b/packages/DocumentsUI/src/com/android/documentsui/DirectoryFragment.java @@ -86,6 +86,7 @@ import android.view.MotionEvent; import android.view.View; import android.view.View.OnLayoutChangeListener; import android.view.ViewGroup; +import android.view.ViewParent; import android.widget.ImageView; import android.widget.TextView; import android.widget.Toast; @@ -1459,7 +1460,7 @@ public class DirectoryFragment extends Fragment { return true; case DragEvent.ACTION_DROP: - int dstPosition = mRecView.getChildAdapterPosition(v); + int dstPosition = mRecView.getChildAdapterPosition(getContainingItemView(v)); DocumentInfo dstDir = null; if (dstPosition != android.widget.AdapterView.INVALID_POSITION) { Cursor dstCursor = mModel.getItem(dstPosition); @@ -1474,6 +1475,19 @@ public class DirectoryFragment extends Fragment { } }; + private View getContainingItemView(View view) { + while (true) { + if (view.getLayoutParams() instanceof RecyclerView.LayoutParams) { + return view; + } + ViewParent parent = view.getParent(); + if (parent == null || !(parent instanceof View)) { + return null; + } + view = (View) parent; + } + } + private View.OnLongClickListener mLongClickListener = new View.OnLongClickListener() { @Override public boolean onLongClick(View v) { @@ -1492,7 +1506,7 @@ public class DirectoryFragment extends Fragment { }; private List<DocumentInfo> getDraggableDocuments(View currentItemView) { - int position = mRecView.getChildAdapterPosition(currentItemView); + int position = mRecView.getChildAdapterPosition(getContainingItemView(currentItemView)); if (position == android.widget.AdapterView.INVALID_POSITION) { return Collections.EMPTY_LIST; } |