私はこの問題をプロジェクトの全期間を通じて解決しています。プロジェクトには多くのリストがあり、そのほとんどにヘッダーがあります。私は別のレイアウトファイルを作成してaddHeaderView()を使ってリストに追加しています。問題は、データ(ArrayList、私の場合)が空の場合、ヘッダーが表示されないことです。ヘッダーレイアウトを空のビューとして再利用する方法を何時間も探してから、私はあきらめて、コードでレイアウトを複製し、setEmptyView()を使用して空のビューとして割り当てました。この問題は、多くのヘッダーにクリック可能なビューが含まれているため、複製されるすべてのビューに対してクリック可能なロジックを2倍にする必要があります。私は前にヘッダーを含めようとしましたが失敗しました。なぜなら、レイアウトがどのように膨らんでいるかをまだよく分かっていないからです。Androidリストビューの空のビューとしてヘッダーレイアウトを再利用する方法
最後に、私はコミュニティと共有したい解決策を思いつきました。他のケースでも同様の問題が発生しています。私はこれがこの問題を解決する最良の方法であるかどうかわからないし、フィードバックや提案は間違いなく歓迎されるだろう。ここ
は、リストのリストビューを含むレイアウト用のコードです:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
>
<ListView
android:id="@+id/lv_my_list"
style="@style/ListStyle"
android:headerDividersEnabled="false"
/>
<include
layout="@layout/my_list_header"
android:id="@+id/my_list_empty"
/>
</LinearLayout>
スタイルは、他のものの間でレイアウトの幅と高さを定義します。
今私はヘッダビュー
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:id="@+id/my_list_header"
>
<Button
android:id="@+id/my_list_button"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Click Me"
/>
</LinearLayout>
が含まれているレイアウトファイルを持って、私はのLinearLayoutは非常に効率的ではありません知っていると私はマージ使用したり、他の効率化対策を試していますが、これはそう働く最初のバージョンであります私は今それと一緒に行くつもりです。最後にコード:
// set up the header
myListView = (ListView)findViewById(R.id.lv_my_list);
View header = View.inflate(this, R.layout.my_list_header, null);
Button b = (Button)header.findViewById(R.id.my_list_button);
b.setOnClickListener(this);
myListView.addHeaderView(header);
// set up the empty view
LinearLayout ll = (LinearLayout)findViewById(R.id.my_list_empty);
b = (Button)ll.findViewById(R.id.my_list_button);
b.setOnClickListener(this);
meLocalListView.setEmptyView(ll);
IはOnClickListenerとしてこれを使用するには、ボタンの各インスタンスを設定し、単一のIDとそれらの両方を指すことができるので、私はレイアウトのボタンを包んだ理由である。R.私のonClickメソッドのid.my_list_button私はこれをさらに多くテストする必要がありますが、今のところうまくいくようです。私はすべての私のリストにまだそれを実装していないので、それはすべての状況で動作しない可能性があります。何か提案があれば、これは私にとって長い間今問題だったので、私に知らせてください。 1つの問題は、IDからボタンをインスタンス化する場合は、正しいIDにアクセスするためにこのプロセス全体を再度実行しなければならない可能性があるということです。
ここには、ソリューション - > http:// stackoverflowがあります。com/a/34557372/542532 – Sadegh