Avoid double query to the ContentResolver when listing the contents of a folder
[pub/Android/ownCloud.git] / src / eu / alefzero / owncloud / ui / fragment / FileListFragment.java
index 069a24d..66d0af8 100644 (file)
@@ -43,8 +43,8 @@ public class FileListFragment extends FragmentListView {
     \r
     private FileListFragment.ContainerActivity mContainerActivity;\r
     \r
-    private Vector<OCFile> mFiles;    \r
     private OCFile mFile = null;\r
+    private FileListListAdapter mAdapter;\r
 \r
     \r
     /**\r
@@ -79,6 +79,7 @@ public class FileListFragment extends FragmentListView {
         Log.i(getClass().toString(), "onActivityCreated() start");\r
         \r
         super.onCreate(savedInstanceState);\r
+        //mAdapter = new FileListListAdapter();\r
         \r
         Log.i(getClass().toString(), "onActivityCreated() stop");\r
     }\r
@@ -86,21 +87,22 @@ public class FileListFragment extends FragmentListView {
     \r
     @Override\r
     public void onItemClick(AdapterView<?> l, View v, int position, long id) {\r
-        if (mFiles.size() <= position) {\r
-            throw new IndexOutOfBoundsException("Incorrect item selected");\r
-        }\r
-        OCFile file = mFiles.get(position);\r
-        \r
-        /// Click on a directory\r
-        if (file.getMimetype().equals("DIR")) {\r
-            // just local updates\r
-            mFile = file;\r
-            listDirectory(file);\r
-            // any other updates are let to the container Activity\r
-            mContainerActivity.onDirectoryClick(file);\r
+        OCFile file = (OCFile) mAdapter.getItem(position);\r
+        if (file != null) {\r
+            /// Click on a directory\r
+            if (file.getMimetype().equals("DIR")) {\r
+                // just local updates\r
+                mFile = file;\r
+                listDirectory(file);\r
+                // any other updates are let to the container Activity\r
+                mContainerActivity.onDirectoryClick(file);\r
+            \r
+            } else {    /// Click on a file\r
+                mContainerActivity.onFileClick(file);\r
+            }\r
             \r
-        } else {    /// Click on a file\r
-            mContainerActivity.onFileClick(file);\r
+        } else {\r
+            Log.d(TAG, "Null object in ListAdapter!!");\r
         }\r
         \r
     }\r
@@ -164,12 +166,9 @@ public class FileListFragment extends FragmentListView {
         }\r
 \r
         mFile = directory;\r
-        mFiles = storageManager.getDirectoryContent(directory);\r
         \r
-        /*if (mFiles == null || mFiles.size() == 0) {\r
-            Toast.makeText(getActivity(), "There are no files here", Toast.LENGTH_LONG).show();\r
-        }*/\r
-        setListAdapter(new FileListListAdapter(directory, storageManager, getActivity()));\r
+        mAdapter = new FileListListAdapter(directory, storageManager, getActivity());\r
+        setListAdapter(mAdapter);\r
     }\r
     \r
     \r