#RecyclerView Error #Linkedlist vs Arraylist
Arraylist是以陣列的方式存放物件參考值
長度可變動,並會預留空間來存放資料
優點:可快速利用索引來取得參照的資料
需用演算法或程式取得或搜尋大量集合內資料時,Arraylist較為快速
缺點:刪除或插入元素時,需要將後面的資料全部往前或往後移,較花費時間
以連結串列的方法來儲存資料的,將元素一個接一個串在一起
優點:當元素需要插入、刪除或排序時較為迅速
缺點:需要依照索引來查詢或存取資料較不方便
節點不會知道自己的位置
所以需要從頭找到尾,較花時間
1.若程式不會隨機訪問或排序數據
2.應用需要時常插入或刪除元素
Linkedlist 較適合
Arraylist初始化盡量給訂一個合適的初始大小,並減少更改數組的大小
(第一選項的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;
}
(https://stackoverflow.com/questions/36369913/how-to-implement-multi-select-in-recyclerview)