From cc7ce5cf93b53754c97e21171cea55d7652606d1 Mon Sep 17 00:00:00 2001
From: Adam Howard <medavox2+github@gmail.com>
Date: Fri, 13 Nov 2015 10:47:05 +0000
Subject: [PATCH] fixed inefficient double-conversion of parceled
 VideoInfoItems, from being cast from VideoInfoItem[] to Vector<>, to using
 ArrayList as an implementation of List

---
 app/src/main/java/org/schabi/newpipe/VideoInfo.java      | 2 +-
 app/src/main/java/org/schabi/newpipe/VideoInfoItem.java  | 1 +
 .../java/org/schabi/newpipe/VideoItemListActivity.java   | 7 ++++---
 .../java/org/schabi/newpipe/VideoItemListFragment.java   | 9 ++++-----
 .../main/java/org/schabi/newpipe/VideoListAdapter.java   | 3 ++-
 5 files changed, 12 insertions(+), 10 deletions(-)

diff --git a/app/src/main/java/org/schabi/newpipe/VideoInfo.java b/app/src/main/java/org/schabi/newpipe/VideoInfo.java
index 2b8dfc8e9..e0d985d8e 100644
--- a/app/src/main/java/org/schabi/newpipe/VideoInfo.java
+++ b/app/src/main/java/org/schabi/newpipe/VideoInfo.java
@@ -26,7 +26,7 @@ import java.util.Vector;
  * along with NewPipe.  If not, see <http://www.gnu.org/licenses/>.
  */
 
-
+/**Info object for opened videos, ie the video ready to play.*/
 public class VideoInfo {
     public String id = "";
     public String title = "";
diff --git a/app/src/main/java/org/schabi/newpipe/VideoInfoItem.java b/app/src/main/java/org/schabi/newpipe/VideoInfoItem.java
index dca5f0edc..7516723b6 100644
--- a/app/src/main/java/org/schabi/newpipe/VideoInfoItem.java
+++ b/app/src/main/java/org/schabi/newpipe/VideoInfoItem.java
@@ -24,6 +24,7 @@ import android.os.Parcelable;
  * along with NewPipe.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+/**Info object for previews of unopened videos, eg search results, related videos*/
 public class VideoInfoItem implements Parcelable {
     public String id = "";
     public String title = "";
diff --git a/app/src/main/java/org/schabi/newpipe/VideoItemListActivity.java b/app/src/main/java/org/schabi/newpipe/VideoItemListActivity.java
index 856497649..90892ca5e 100644
--- a/app/src/main/java/org/schabi/newpipe/VideoItemListActivity.java
+++ b/app/src/main/java/org/schabi/newpipe/VideoItemListActivity.java
@@ -16,6 +16,7 @@ import android.view.View;
 import android.view.inputmethod.InputMethodManager;
 import android.widget.ImageView;
 
+import java.util.ArrayList;
 import java.util.Arrays;
 
 /**
@@ -114,13 +115,13 @@ public class VideoItemListActivity extends AppCompatActivity
         Bundle arguments = getIntent().getExtras();
 
         if(arguments != null) {
-            Parcelable[] p = arguments.getParcelableArray(VIDEO_INFO_ITEMS);
+            //Parcelable[] p = arguments.getParcelableArray(VIDEO_INFO_ITEMS);
+            ArrayList<VideoInfoItem> p = arguments.getParcelableArrayList(VIDEO_INFO_ITEMS);
             if(p != null) {
                 mode = PRESENT_VIDEOS_MODE;
                 getSupportActionBar().setDisplayHomeAsUpEnabled(true);
 
-                //todo: make this more efficient
-                listFragment.present(Arrays.copyOf(p, p.length, VideoInfoItem[].class));
+                listFragment.present(p);
             }
         }
 
diff --git a/app/src/main/java/org/schabi/newpipe/VideoItemListFragment.java b/app/src/main/java/org/schabi/newpipe/VideoItemListFragment.java
index c9f6c0cd7..5bab9669b 100644
--- a/app/src/main/java/org/schabi/newpipe/VideoItemListFragment.java
+++ b/app/src/main/java/org/schabi/newpipe/VideoItemListFragment.java
@@ -16,6 +16,7 @@ import android.widget.Toast;
 
 import java.net.URL;
 import java.util.Arrays;
+import java.util.List;
 import java.util.Vector;
 
 
@@ -167,14 +168,12 @@ public class VideoItemListFragment extends ListFragment {
         }
     }
 
-    public void present(VideoInfoItem[] videoList) {
+    public void present(List<VideoInfoItem> videoList) {
         mode = PRESENT_VIDEOS_MODE;
         setListShown(true);
         getListView().smoothScrollToPosition(0);
 
-        // inefficient like hell i know (welcome to the world of java)
-        //todo: make this more efficient
-        updateList(new Vector<>(Arrays.asList(videoList)));
+        updateList(videoList);
     }
 
     public void search(String query) {
@@ -221,7 +220,7 @@ public class VideoItemListFragment extends ListFragment {
         }
     }
 
-    private void updateList(Vector<VideoInfoItem> list) {
+    private void updateList(List<VideoInfoItem> list) {
         try {
             videoListAdapter.addVideoList(list);
             terminateThreads();
diff --git a/app/src/main/java/org/schabi/newpipe/VideoListAdapter.java b/app/src/main/java/org/schabi/newpipe/VideoListAdapter.java
index c174528c6..87bd3b8aa 100644
--- a/app/src/main/java/org/schabi/newpipe/VideoListAdapter.java
+++ b/app/src/main/java/org/schabi/newpipe/VideoListAdapter.java
@@ -9,6 +9,7 @@ import android.view.ViewGroup;
 import android.widget.BaseAdapter;
 import android.widget.ListView;
 
+import java.util.List;
 import java.util.Vector;
 
 /**
@@ -48,7 +49,7 @@ public class VideoListAdapter extends BaseAdapter {
         this.context = context;
     }
 
-    public void addVideoList(Vector<VideoInfoItem> videos) {
+    public void addVideoList(List<VideoInfoItem> videos) {
         videoList.addAll(videos);
         for(int i = 0; i < videos.size(); i++) {
             downloadedThumbnailList.add(false);