2011-06-27 31 views
5

Tôi đã thiết lập SimpleCursorAdapter trên chế độ xem của mình và nó hoạt động tốt khi tôi tìm nạp dữ liệu từ cơ sở dữ liệu của mình. Truy vấn được chạy bằng mệnh đề DESC-ORDER BY date. Tất cả các hàng được lấy và hiển thị độc đáo trong ListView của tôi, và tôi đang sử dụng adapter.setViewBinder() để thêm một số logic vào các mục (thêm một hình thu nhỏ).Thêm dấu phân cách ngày cho SimpleCursorAdapter trong Android

Mã này là như thế này:

// Setup the adapter 
adapter = new SimpleCursorAdapter(this, R.layout.rowitem, cursor, FROM, TO); 
adapter.setViewBinder(new SimpleCursorAdapter.ViewBinder() { 
    @Override 
    public boolean setViewValue(View view, Cursor cursor, int columnIndex) { 
    // Only taylor the ImageView in the adapter-list, skip everything else. 
    if (view.getId() != R.id.imageItem) 
     return false; 

    // here goes the logic, but it's cut away due to its size 

    } 

    return true; 
    } 
}); 

Bây giờ tôi muốn thêm một số logic hơn: Tôi muốn thêm một thanh tách nhỏ chứa ngày nếu ngày được thay đổi giữa hai mặt hàng, như thế này:

=== DATE1 =============== 
Item 1 
Item 2 
=== DATE2 =============== 
Item 3 
=== DATE3 =============== 
Item 4 
Item 5 
Item 6 
=== DATE4 =============== 
Item 7 

v.v. Tuy nhiên, tôi không chắc chắn làm cách nào để chèn phần tử Chế độ xem mới bên trong bộ điều hợp và dường như tôi không thể tìm thấy câu trả lời trên developer.android.com.

Tôi làm cách nào để thực hiện việc này?

+1

Tự khắc phục. Tôi chỉ cần thêm một Chế độ xem khác vào bố cục hàng, đã thêm một biến giả để lưu ngày duyệt cuối cùng. Nếu ngày trong mục danh sách tiếp theo giống nhau, hãy đặt chế độ hiển thị của Chế độ xem mới thành GONE. – bos

+0

Tôi có nghĩ rằng điều này có nghĩa là việc khai thác vào DATE2 có nghĩa là bạn đang thực sự khai thác trên Mục 3? – chobok

Trả lời

0

Bạn cũng có thể xem giải pháp mạnh mẽ hơn một chút mà tôi đã phát triển: http://code.google.com/p/android-section-list/. Nó thậm chí còn nhiều hơn một chút so với nhu cầu của bạn (mặc dù đẹp hơn) - nó hoạt động theo cách nó thêm một bộ điều hợp đặc biệt bao quanh bộ điều hợp ban đầu và các tiêu đề phần đầu vào (trong các tiêu đề ngày tháng) khi cần. Các tiêu đề vẫn dính ở đầu danh sách (tương tự như trong danh sách các phần của iphone) - để bạn luôn có thể thấy phần nào bạn đang ở trong .....

Bạn có thể sử dụng danh sách phần làm thư viện - Bạn sẽ chỉ phải thay đổi bộ chuyển đổi của bạn để trở SectionListItem (và đưa ngày vào phần) và sau đó thêm nó vào SectionListView - đó sẽ thực hiện công việc về cơ bản ....

+0

Có vẻ đẹp, nhưng tôi không tìm thấy nguồn tải xuống từ trang đó. – bos

+0

Đó là kho lưu trữ mã. Bạn có thể (nên) sao chép kho lưu trữ và lấy nó từ đó. –

0

- Edit -

được rồi đây là một giải pháp dễ dàng cho vấn đề này:

Custom ListView with Date as SectionHeader (Used custom SimpleCursorAdapter)

--- bài cũ --- Tôi không thể bình luận bài viết đầu tiên của bạn nhưng tôi muốn hỏi bạn xem bạn có thể giải thích chi tiết hơn về cách quản lý danh sách này với tiêu đề ngày không. Bạn sẽ phải lặp qua tất cả các dòng curser hoặc có cách nào tốt hơn được cung cấp bởi khung công tác không?

Tôi có một vài mục và nếu tôi lặp lại với while(listData.moveToNext()){ thì sẽ mất nhiều thời gian. (Tôi cũng phải tính toán từ một con dấu unixtime cho một Calendar, đến một Date, thành một tháng-Int).

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