2013-08-21 74 views
9

有没有办法在List之上插入另一个ViewListView?例如,我想要一个位于List顶部的标题栏(TextView),并在列表滚动时滚动查看视图。我可以想到迄今为止这样做的两种方式,但都是黑客行为。带标题的列表视图


想法#1 - 使用假装为ListView的LinearLayout。但问题是你无法利用适配器提供的“智能”加载/卸载视图。

<ScrollView> 
    <LinearLayout> 

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

    </LinearLayout> 
</ScrollView> 


理念#2 - 使用哈克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

简单。只需添加标题视图到您的ListView

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

listView.addHeaderView(textView); 
+5

确保在设置标题前调用'setAdapter(null);'。或者,仅在设置标题后添加适配器。 – sriramramani

+0

哇,我不知道存在! – Matt