shihyingru
12/18/2017 - 8:18 AM

Android LEARNING

#RecyclerView Error #Linkedlist vs Arraylist

Linkedlist vs Arraylist

Arraylist

Arraylist是以陣列的方式存放物件參考值
長度可變動,並會預留空間來存放資料

優點:可快速利用索引來取得參照的資料
需用演算法或程式取得或搜尋大量集合內資料時,Arraylist較為快速

缺點:刪除或插入元素時,需要將後面的資料全部往前或往後移,較花費時間

LinkedList

以連結串列的方法來儲存資料的,將元素一個接一個串在一起

優點:當元素需要插入、刪除或排序時較為迅速

缺點:需要依照索引來查詢或存取資料較不方便
節點不會知道自己的位置
所以需要從頭找到尾,較花時間

甚麼時候需要使用Arraylist?或Linkedlist??

1.若程式不會隨機訪問或排序數據
2.應用需要時常插入或刪除元素

Linkedlist 較適合

Arraylist初始化盡量給訂一個合適的初始大小,並減少更改數組的大小

RecyclerView Error

P1-Multi Selected Item

?Ques:選擇多選項item時資訊會錯亂

(第一選項的imageview被使用者選取時,第八個選項會因為recyclerview回收layout重新利用的關係,被認為是第一選項而一併被選取)

 final MoneyBean num = reUnitList.get(position); //須先記錄每個item的位置
 ((MainCoinHolder) holder).checkImg.setVisibility(num.isSelected() ? View.VISIBLE : View.GONE);

並設置setSelected() & isSelected()兩個method記錄是否被選取.

private boolean isSelected = false; //最初設定為"未選取"

public void setSelected(boolean selected) {
    isSelected = selected;
}

public boolean isSelected() {
    return isSelected;
}
>StackOverflow-ANS

(https://stackoverflow.com/questions/36369913/how-to-implement-multi-select-in-recyclerview)