2012-09-18 40 views
33

Tôi đang thêm một chân trang và chế độ xem tiêu đề vào một ListView bằng cách sử dụng các phương pháp setHeaderView()setFooterView()ViewInflater. Điều đó hoạt động khá tốt.Cách tạo đầu trang hoặc chân trang của một ListView không thể bấm

Nhưng làm cách nào tôi có thể ngăn chế độ xem đầu trang hoặc chân trang kích hoạt các sự kiện onListItemClick? Tất nhiên tôi có thể nắm bắt sự kiện và kiểm tra xem nó đến từ đầu trang hay chân trang, nhưng điều này chỉ giải quyết một phần của vấn đề, vì đầu trang và chân trang vẫn được tập trung khi được nhấp.

Trả lời

63

Chỉ cần sử dụng ListView#addHeaderView(View v, Object data, boolean isSelectable); và phương thức addFooter() phù hợp.


Mục đích của thông số Object data.

Mã nguồn ListView mô tả các data tham số như:

Dữ liệu sao lưu quan điểm. Điều này được trả về từ ListAdapter # getItem (int).

Điều đó có nghĩa là nếu tôi sử dụng listView.getAdapter().getItem(0);, nó sẽ trả về data Đối tượng từ tiêu đề của chúng tôi.


tôi sẽ xây dựng này với một ví dụ:

listView = (ListView) findViewById(R.id.list); 
String[] array = new String[] {"one", "two", "three"}; 
adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, array); 

Tiếp theo chúng ta hãy thêm một header và thiết lập adapter:

listView.addHeaderView(view, "Potato", false); 
listView.setAdapter(adapter); 

Sau đó nếu chúng ta đặt câu hỏi:

Log.v("ListAdapter", listView.getAdapter().getItem(0)); // output: "Potato" 
Log.v("ArrayAdapter", adapter.getItem(0));    // output: "one" 
+2

Ah tuyệt vời! Nó hoạt động. Một câu hỏi nữa đối tượng dữ liệu là gì? Tại thời điểm này tôi đặt tham số dữ liệu thành null. Nhưng khi tôi vượt qua một đối tượng thực sự, điều gì sẽ xảy ra với nó? – Flo

+0

Ngay bây giờ tôi không biết, tôi đang đọc mã nguồn và tìm kiếm trực tuyến để xem nó hoạt động như thế nào. Tôi sẽ đăng một bản cập nhật nếu tôi tìm ra! – Sam

+0

Nó hoạt động. Đã tiết kiệm rất nhiều thời gian. – Anukool

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