2011-10-30 27 views

Trả lời

19

Chỉ cần xem ví dụ này Android – Sectioned Headers in ListViews, Mô tả độc đáo của nó như thế nào để triển khai Phần đầu đề trong ListViews.

android-amazing-listview

Jeff Sharkey's SeparatedListAdapter

MergeAdapter by CommonsWare

Cảm ơn.

+0

Cảm ơn bạn, tôi đã giải quyết vấn đề này. – stream

+0

thực hiện bất kỳ liên kết nào trong số các liên kết này có giúp ghim hàng tiêu đề lên đầu màn hình khi người dùng cuộn qua các phần không? – topwik

+0

@towpse - Hey tôi không hiểu ý bạn là gì? – user370305

12

Tạo một LAYOUT HEADER tại của bạn Danh sách mục Layout. Chúng tôi sử dụng tùy chọn VISIBILITY để hiển thị và ẩn HEADER LAYOUT. Điều này sẽ hoạt động giống như tiêu đề phần.

Trong phương pháp "getView" của bộ điều hợp, hãy kiểm tra chữ cái đầu tiên của "trường tên (trong trường hợp bạn đang hiển thị trong các liên kết với Tên)" với chữ cái đầu tiên của trường tên LIST ITEMS trước đó ". Nếu nó macthes ẩn HEADER LAYOUT (với một dạng xem văn bản), thì hiển thị HEADER LAYOUT với Header Text hiển thị chữ cái đầu tiên của trường Name.

Đây là mã

Tên chuỗiFirstLetter = "A"; // Khai báo toàn cục này, chứ không phải bên trong getView.

// Bên trong getView Tên chuỗiF = Name.slice (0,1);

if(!nameFirstLetter.equals(nameF)){ 
     nameFirstLetter = nameF ;   
     holder.headerText.setText(nameFirstLetter); 
     holder.headerLayout.setVisibility(View.VISIBLE); 
    }else{ 
     holder.headerLayout.setVisibility(View.GONE); 
    } 

Đây là phương pháp dễ nhất để hiển thị tiêu đề phần trong chế độ xem Danh sách Android, nhưng nó sẽ không hoạt động như tiêu đề phần Iphone, tức là. Tiêu đề phần ẩn cùng với các mục danh sách khác khi chúng tôi cuộn lên/xuống.

+0

Nếu mục danh sách có thể nhấp, điều này làm cho tiêu đề có thể nhấp được. Đặc biệt là với những gợn sóng trong Android hiện đại, điều này hiện rõ ràng cho người dùng. –

3

Nếu ai đó cần một giải pháp khác, đặc biệt là những giải pháp được sử dụng để phát triển iOS, thích hoặc muốn mô phỏng giao diện iOS; Tôi khuyên bạn nên điều sau đây:

http://applidium.com/en/news/headerlistview_for_android/

Logic cũng giống như dành cho iOS, và làm hầu hết các chân-công việc cho bạn

+0

Nếu bạn truy cập repo github của họ, dự án đã được đánh dấu là không được chấp nhận: https://github.com/applidium/HeaderListView – ThomasW

0

Bạn có thể có một cái nhìn vào SectionedMergeAdapter. Nếu bạn có nhiều danh sách dữ liệu phụ, bạn có thể ghép chúng lại với nhau và có tiêu đề cho chúng.

Ví dụ mã -

ListView listView = (ListView) findViewById(android.R.id.list); 

ArrayAdapter<Integer> adapter1 = 
     new ArrayAdapter<>(this, R.layout.item_list, android.R.id.text1, arrayList1); 
ArrayAdapter<Integer> adapter2 = 
     new ArrayAdapter<>(this, R.layout.item_list, android.R.id.text1, arrayList2); 
ArrayAdapter<Integer> adapter3 = 
     new ArrayAdapter<>(this, R.layout.item_list, android.R.id.text1, arrayList3); 

TextView tv1 = new TextView(this); 
tv1.setText("Header 1"); 
TextView tv2 = new TextView(this); 
tv2.setText("Header 2"); 
TextView tv3 = new TextView(this); 
tv3.setText("Header 3"); 

SectionedMergeAdapter adapter = new SectionedMergeAdapter(); 

adapter.addSection(new SectionedMergeAdapter.Section(tv1, adapter1)); 
adapter.addSection(new SectionedMergeAdapter.Section(tv2, adapter2)); 
adapter.addSection(new SectionedMergeAdapter.Section(tv3, adapter3)); 

listView.setAdapter(adapter); 
Các vấn đề liên quan