2013-08-21 51 views
9

Có cách nào để chèn View khác lên trên List trong một ListView không? Ví dụ, tôi muốn một thanh tiêu đề (TextView) nằm trên đầu trang của List và cuộn ra khỏi dạng xem dưới dạng cuộn danh sách. Tôi có thể nghĩ về hai cách cho đến nay để làm điều này, nhưng cả hai đều là hack.ListView với tiêu đề


Ý tưởng số 1 - Sử dụng LinearLayout giả vờ là một ListView. Nhưng vấn đề là bạn không thể tận dụng lợi thế của việc tải/dỡ các chế độ xem "thông minh" mà bộ điều hợp cung cấp.

<ScrollView> 
    <LinearLayout> 

     <TextView/> 
     <LinearLayout 
      android:orientation="vertical" /> # add ListItems here 

    </LinearLayout> 
</ScrollView> 


Idea # 2 - Sử dụng một hacky ArrayAdapter, với một phương pháp getView tương tự như sau:

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 

    if(position == 0) 
     View view = inflater.inflate(R.layout.special_list_item, null); 
    else 
     View view = inflater.inflate(R.layout.regular_list_item, null); 

    ... 

    return vi; 
} 

Trả lời

33

đơn giản. Chỉ cần thêm chế độ xem tiêu đề vào ListView

TextView textView = new TextView(context); 
textView.setText("Hello. I'm a header view"); 

listView.addHeaderView(textView); 
+5

Đảm bảo gọi 'setAdapter (null);' trước khi đặt tiêu đề. Hoặc, chỉ thêm bộ điều hợp sau khi đặt tiêu đề. – sriramramani

+0

Chà, tôi không biết là đã tồn tại! – Matt

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