2015-10-08 16 views
9

Tôi đang sử dụng RecyclerView, tôi thêm các mục trước mục đầu tiên, vị trí cuộn di chuyển lên mục mới được thêm đầu tiên. Làm thế nào tôi có thể duy trì vị trí cuộn của mình sau khi thêm các mục mới tại chỉ mục đầu tiên của nó và gọi notifydatasetchange()?Làm thế nào để duy trì vị trí cuộn trong RecyclerView sau khi thêm mục vào chỉ mục đầu tiên của nó và gọi notifydatasetchange

đây là những gì tôi làm trong bộ chuyển đổi của tôi

mCurrentFragment.items.addAll(0, createLineItems(dataArrayList)); 

    notifyDataSetChanged(); 

Bất kỳ lời đề nghị?

+0

bạn có thể tính toán nó từ số tiền của các mục mà bạn chèn vào và thiết lập giá trị cuộn bằng tay – filipproch

+0

ok tôi sẽ thử nó, thx – eddykordo

Trả lời

20

Có hai lựa chọn:

  1. Sử dụng các phiên bản phức tạp hơn của notify

    List newData = createLineItems(dataArrayList); 
    mCurrentFragment.items.addAll(0, newData); 
    notifyItemRangeInserted(0, newData.size()); 
    
  2. Sử dụng ID ổn định. Trên bộ điều hợp ghi đè của bạn public long getItemId (int position) để làm cho nó trả về MEANINGFUL giá trị và gọi setHasStableIds(true); trên đó.

+0

tùy chọn đầu tiên làm việc cho tôi, thx để được giúp đỡ – eddykordo

+0

@Budius Ý anh là gì bởi có ý nghĩa? nó có nghĩa là một id duy nhất liên quan đến mỗi mục? –

+0

@HamzehSoboh Tôi muốn nói chính xác điều đó. Nếu ID của bạn chỉ là vị trí (ví dụ), nó sẽ không hoạt động. Nó phải là (ví dụ) ID người dùng hoặc ID ảnh, vì vậy khi vị trí lượt xem thay đổi ID vẫn bị ràng buộc với dữ liệu – Budius

Các vấn đề liên quan