Browse Source

搜索游戏中初始化时只显示10条数据

zengjiebin 7 years ago
parent
commit
7fb12fdc7c

+ 19 - 0
app/src/main/java/com/sheep/gamegroup/util/ListUtil.java

@@ -71,6 +71,25 @@ public class ListUtil {
         }
         return count;
     }
+    public static <T> int addAll(List<T> list, List<? extends T> elements, int maxCount) {
+        int count = 0;
+        if(list == null){
+            list = emptyList();
+        }
+        if(elements != null) {
+            for (T element : elements) {
+                int index = list.indexOf(element);
+                if (index != -1) {
+                    list.set(index, element);
+                } else if (list.add(element)) {
+                    count++;
+                }
+                if(count >= maxCount)//最多只加maxCount条数据
+                    break;
+            }
+        }
+        return count;
+    }
 
     public static <T> boolean isLastPosition(List<T> list, int position) {
         return size(list) == position + 1;

+ 1 - 1
app/src/main/java/com/sheep/gamegroup/util/MyDbManager.java

@@ -195,7 +195,7 @@ public class MyDbManager {
     public void hideSearchApp(SearchAppRecord item) {
         item.setCount(0);
         try {
-            db.save(item);
+            db.saveOrUpdate(item);
         } catch (Exception e) {
             e.printStackTrace();
         }

+ 23 - 11
app/src/main/java/com/sheep/gamegroup/view/activity/ActSearchApp.java

@@ -83,7 +83,10 @@ public class ActSearchApp extends BaseActivity {
                 item_search_record_x.setOnClickListener(new View.OnClickListener() {
                     @Override
                     public void onClick(View view) {
-                        searchRecordList.remove(item);
+                        searchRecordMap.remove(item.getInput());
+                        allSearchRecordList.remove(item);
+                        searchRecordList.clear();
+                        ListUtil.addAll(searchRecordList, allSearchRecordList, 10);
                         inputAdapter.notifyDataSetChanged();
                         MyDbManager.getInstance().hideSearchApp(item);
                     }
@@ -92,7 +95,6 @@ public class ActSearchApp extends BaseActivity {
             }
         };
         search_app_list.setAdapter(inputAdapter);
-        frame_container.setVisibility(View.INVISIBLE);
     }
 
     private ArrayAdapter<SearchAppRecord> inputAdapter;
@@ -142,22 +144,30 @@ public class ActSearchApp extends BaseActivity {
             title_search_commit.performClick();
         }
     };
-
+    private Comparator<SearchAppRecord> comparator = new Comparator<SearchAppRecord>() {
+        @Override
+        public int compare(SearchAppRecord item1, SearchAppRecord item2) {
+            return item2.getCount() - item1.getCount();
+        }
+    };
     @Override
     public void initData() {
         //初始化搜索历史
         List<SearchAppRecord> newSgrList = MyDbManager.getInstance().getAllSearchAppRecord();
-        ListUtil.addAll(searchRecordList, newSgrList);
-        Collections.sort(searchRecordList, new Comparator<SearchAppRecord>() {
-            @Override
-            public int compare(SearchAppRecord item1, SearchAppRecord item2) {
-                return item2.getCount() - item1.getCount();
-            }
-        });
-        for (SearchAppRecord item : searchRecordList) {
+        ListUtil.addAll(allSearchRecordList, newSgrList);
+        Collections.sort(allSearchRecordList, comparator);
+        ListUtil.addAll(searchRecordList, allSearchRecordList, 10);
+        for (SearchAppRecord item : allSearchRecordList) {
             searchRecordMap.put(item.getInput(), item);
         }
         inputAdapter.notifyDataSetChanged();
+        if(searchRecordList.isEmpty()) {
+            frame_container.setVisibility(View.VISIBLE);
+            search_app_list.setVisibility(View.INVISIBLE);
+        } else {
+            frame_container.setVisibility(View.INVISIBLE);
+            search_app_list.setVisibility(View.VISIBLE);
+        }
     }
 
     @OnClick({R.id.title_search_commit, R.id.title_img_back})
@@ -173,6 +183,7 @@ public class ActSearchApp extends BaseActivity {
     }
 
     List<SearchAppRecord> searchRecordList = new ArrayList<>();
+    List<SearchAppRecord> allSearchRecordList = new ArrayList<>();
     Map<String, SearchAppRecord> searchRecordMap = new HashMap<>();
 
     //尝试搜索游戏
@@ -193,6 +204,7 @@ public class ActSearchApp extends BaseActivity {
             searchRecord = new SearchAppRecord();
             searchRecord.setInput(inputText);
             searchRecordList.add(searchRecord);
+            allSearchRecordList.add(searchRecord);
             searchRecordMap.put(inputText, searchRecord);
         }
         searchRecord.setTime(System.currentTimeMillis());