[Android] Show network favorites on top

Geoffrey Métais git at videolan.org
Wed Feb 3 16:39:50 CET 2016


vlc-android | branch: master | Geoffrey Métais <geoffrey.metais at gmail.com> | Wed Feb  3 16:22:24 2016 +0100| [ef6dbddc55c3199887327ae41e0ad8171f59b8dd] | committer: Geoffrey Métais

Show network favorites on top

> https://code.videolan.org/videolan/vlc-android/commit/ef6dbddc55c3199887327ae41e0ad8171f59b8dd
---

 .../vlc/gui/browser/BaseBrowserAdapter.java        |  7 ++++-
 .../vlc/gui/browser/NetworkBrowserFragment.java    | 32 +++++++++++-----------
 2 files changed, 22 insertions(+), 17 deletions(-)

diff --git a/vlc-android/src/org/videolan/vlc/gui/browser/BaseBrowserAdapter.java b/vlc-android/src/org/videolan/vlc/gui/browser/BaseBrowserAdapter.java
index b1935c5..6718bf0 100644
--- a/vlc-android/src/org/videolan/vlc/gui/browser/BaseBrowserAdapter.java
+++ b/vlc-android/src/org/videolan/vlc/gui/browser/BaseBrowserAdapter.java
@@ -64,6 +64,7 @@ public class BaseBrowserAdapter extends  RecyclerView.Adapter<RecyclerView.ViewH
     LinkedList<String> mMediaDirsLocation;
     List<String> mCustomDirsLocation;
     String mEmptyDirectoryString;
+    private int mTop = 0;
 
     public BaseBrowserAdapter(BaseBrowserFragment fragment){
         this.fragment = fragment;
@@ -236,7 +237,7 @@ public class BaseBrowserAdapter extends  RecyclerView.Adapter<RecyclerView.ViewH
         if (positionTo != -1)
             position = positionTo;
         else
-            position = top ? 0 : mMediaList.size();
+            position = top ? mTop : mMediaList.size();
 
         if (item instanceof Media)
             item = new MediaWrapper((Media) item);
@@ -249,6 +250,10 @@ public class BaseBrowserAdapter extends  RecyclerView.Adapter<RecyclerView.ViewH
             notifyItemInserted(position);
     }
 
+    public void setTop (int top) {
+        mTop = top;
+    }
+
     public void setDescription(int position, String description){
         Object item = getItem(position);
         if (item instanceof MediaWrapper)
diff --git a/vlc-android/src/org/videolan/vlc/gui/browser/NetworkBrowserFragment.java b/vlc-android/src/org/videolan/vlc/gui/browser/NetworkBrowserFragment.java
index 4b9559c..0c0a19a 100644
--- a/vlc-android/src/org/videolan/vlc/gui/browser/NetworkBrowserFragment.java
+++ b/vlc-android/src/org/videolan/vlc/gui/browser/NetworkBrowserFragment.java
@@ -112,13 +112,7 @@ public class NetworkBrowserFragment extends BaseBrowserFragment implements View.
     @Override
     protected void browseRoot() {
         ArrayList<MediaWrapper> favs = MediaDatabase.getInstance().getAllNetworkFav();
-        if (!favs.isEmpty()) {
-            mFavorites = favs.size();
-            for (MediaWrapper fav : favs) {
-                mAdapter.addItem(fav, false, true);
-            }
-            mAdapter.addItem("Network favorites", false, true);
-        }
+        updateFavorites();
         mMediaBrowser.discoverNetworkShares(Util.NETWORK_DISCOVER_LIST);
     }
 
@@ -133,16 +127,22 @@ public class NetworkBrowserFragment extends BaseBrowserFragment implements View.
 
         if (newSize == 0 && mFavorites == 0)
             return;
-        for (int i = 1 ; i <= mFavorites ; ++i){ //remove former favorites
-            mAdapter.removeItem(totalSize-i, mReadyToDisplay);
-        }
-        if (newSize == 0)
-            mAdapter.removeItem(totalSize-mFavorites-1, mReadyToDisplay); //also remove separator if no more fav
-        else {
+        if (mFavorites != 0)
+            for (int i = 1 ; i <= mFavorites ; ++i) //remove former favorites
+                mAdapter.removeItem(i, mReadyToDisplay);
+
+        if (newSize == 0) {
+            mAdapter.removeItem(0, mReadyToDisplay); //also remove separator if no more fav
+            mAdapter.removeItem(0, mReadyToDisplay); //also remove separator if no more fav
+        } else {
+            if (mFavorites == 0)
+                mAdapter.addItem("Network favorites", false, false,0); //add header if needed
+            for (int i = 0 ; i < newSize ; ++i)
+                mAdapter.addItem(favs.get(i), false, false, i+1); //add new favorites
             if (mFavorites == 0)
-                mAdapter.addItem("Network favorites", false, false); //add header if needed
-            for (MediaWrapper fav : favs)
-                mAdapter.addItem(fav, false, false); //add new favorites
+                mAdapter.addItem("Shared folders", false, false, newSize + 1); //add header if needed
+            mAdapter.setTop(newSize + 2);
+            mAdapter.notifyItemRangeChanged(0, newSize + 1);
         }
         mFavorites = newSize; //update count
     }



More information about the Android mailing list