2012-04-15 18 views
2

私はListActivity、listviewを使用しています。Android - ListActivity、ヘッダーとフッターの表示を追加

listView = getListView(); 

完全に機能しています。私は

LayoutInflater inflater = getLayoutInflater(); 
listView.addFooterView(inflater.inflate(R.layout.footer, null), null, false); 

とフッターのビューを追加し、すべてがピカピカ醜いだったので、私は

LayoutInflater inflater = getLayoutInflater(); 
listView.addHeaderView(inflater.inflate(R.layout.footer, null), null, false); 

としてリストビューのヘッダに(1つだけのEditTextとだけ1ボタンが含まれています)、このフッタービューを追加したいです突然すべてがうまくいかず、すぐにRuntimeExceptionが出ます。

Suspended(exception RuntimeException) 
ActivityThread.performLaunchActivity(ActivityThread$ActivityRecord, Intent) 
ActivityThread.handleLaunchActivity(ActivityThread$ActivityRecord, Intent) 
ActivityThread.access$2200(ActivityThread, Activity$ActiviyRecord, Intent), 
so on.. 

なぜ例外がスローされるのですか? addFooterViewとaddHeaderViewの違いは何ですか?ListActivityにヘッダーを追加するにはどうすればよいですか?

UPDATE

あなたはコメントで読むことができるように、私のlogcatはまだ動作しませんが、私はちょうどこの瞬間に次の試してみました:

} catch(Exception e){ 
    Writer result = new StringWriter(); 
    PrintWriter printWriter = new PrintWriter(result); 
    e.printStackTrace(printWriter); 
    String error = result.toString(); 
} 

、その後、私はブレークポイントを置いて、私ができます式セクションの読み込みエラー。それは言った:

java.lang.IllegalStateException: Cannot add header view to list -- setAdapter has already been called. 

、それは私たち全員にとって有益でした。コマンドの種類の変更後、それはperferctly動作します。

+0

@add fここではlogcatは... –

+0

logcatは全く動作しません:Sは私には一度も働きませんでした – Victor

+0

@Victor: "logcatはまったく動作しません:Sは私に働きませんでした" - あなたはアクセスする方法を知らないlogcatデータ?任意のエミュレータを起動するか、PCに電話を接続し、EclipseでDDMSを使用すると、実行中のすべてのアプリケーションがlogcatにデータを出力することがわかります。 – Squonk

答えて

-6

あなたのlistViewにヘッダービューを追加する場合は、setListAdapter()を使用する前にそれを厳重に行う必要があります。そうしないと、IllegalStateExceptionが発生します。

+9

あなたは、アンチカフェが同じ答えを出してから2週間後、あなた自身の質問に答えました。それはまったくの精神ではありません。 –

+1

ええ、あなたがコメントと更新を読むと、私は自分で答えを見つけたことがわかります。私は質問に答えたいと思ったが、私の低い評判のためにできなかった。結局のところ、あなたは私の正解をマークします。それはまったくの精神ではありません。 – Victor

+0

勝者がいない、あなたは最初にそのことを言っていません。もしあなたがそうしたとしても、誰かがあなたに明確な答えをしたことに感謝しなければなりません。 –

11

あなたは

java.lang.IllegalStateExceptionをログとして:リストにヘッダビューを追加することはできません - setAdapterはすでに呼ばれています。

リストビューの方法addHeaderViewまたはaddFooterViewsetAdapter前に呼び出さなければなりません。

+0

うん、私も答えを追加したいと思っていましたが、私の低い評判のために自分の質問に答えるのに8時間待たなければなりません。 – Victor

0

のonCreate()メソッドは、追加ヘッダとフッタ

header_layout.xml活性Javaファイルに今

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" > 
    <TextView 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:gravity="center_horizontal" 
    android:text="header" 
    /> 
    </RelativeLayout> 

footer_layout.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" > 
<TextView 
android:layout_width="fill_parent" 
android:layout_height="wrap_content" 
android:gravity="center_horizontal" 
android:text="footer" 
/> 
</RelativeLayout> 

のレイアウトXMLを作成

listView = (ListView) findViewById(R.id.listView1); 
LayoutInflater inflater = getLayoutInflater(); 
    ViewGroup header = (ViewGroup) inflater.inflate(R.layout.header, listView, 
      false); 
    ViewGroup footer = (ViewGroup) inflater.inflate(R.layout.footer, listView, 
      false); 
    listView.addHeaderView(header, null, false); 
    listView.addFooterView(footer, null, false); 
    listView.setAdapter(adapter); 
関連する問題