2013-08-21 2 views
9

Есть ли способ вставить еще один View над List в ListView? Например, я хочу, чтобы панель заголовка (TextView) находилась поверх List и прокручивается вне поля зрения в виде прокрутки списка. До сих пор я могу представить два способа сделать это, но оба они - хаки.ListView с заголовком


Idea # 1 - Используйте LinearLayout, который претендует на роль ListView. Но проблема в том, что вы не можете воспользоваться «умной» загрузкой/разгрузкой представлений, предоставляемых адаптером.

<ScrollView> 
    <LinearLayout> 

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

    </LinearLayout> 
</ScrollView> 


Идея # 2 - Использование Hacky ArrayAdapter, с помощью метода getView похожее на это:

@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; 
} 

ответ

33

Simple. Просто добавьте вид заголовка к вашему ListView

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

listView.addHeaderView(textView); 
+5

Обязательно позовите 'setAdapter (нуль);' перед установкой заголовка. Или добавьте адаптер только после настройки заголовка. – sriramramani

+0

Ничего себе, я понятия не имел, что существует! – Matt

Смежные вопросы