web-dev-qa-db-ja.com

タイトル付きのListView

ViewListの上に別のListViewを挿入する方法はありますか?たとえば、Listの上に配置され、リストがスクロールするとビューの外にスクロールするタイトルバー(TextView)が必要です。これまでのところ、これを行うには2つの方法が考えられますが、どちらもハックです。


アイデア#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;
}
11
Matt

シンプル。 ListViewにヘッダービューを追加するだけです

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

listView.addHeaderView(textView);
37
dymmeh