私はアプリケーションを開発しています、私のアプリケーションでは、DOM解析を使用してデータを表示するためにリストビューを使用しています、リストビューでフッターしたい、フッターをクリックすると追加のデータがリストビューに追加されますプロセス、image1とimgae2を参照してください。赤い長方形のフッターに言及します
図1-「その他のニュース」のようなフッター
図2リストビューに追加された10レコードを追加
フッターとして設定するテキストで構成されるフッタービューレイアウトを作成してから、試してください
View footerView = ((LayoutInflater) ActivityContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE)).inflate(R.layout.footer_layout, null, false);
ListView.addFooterView(footerView);
フッターのレイアウトは次のようになります。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:paddingTop="7dip"
Android:paddingBottom="7dip"
Android:orientation="horizontal"
Android:gravity="center">
<LinearLayout
Android:id="@+id/footer_layout"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:orientation="horizontal"
Android:gravity="center"
Android:layout_gravity="center">
<TextView
Android:text="@string/footer_text_1"
Android:id="@+id/footer_1"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:textSize="14dip"
Android:textStyle="bold"
Android:layout_marginRight="5dip" />
</LinearLayout>
</LinearLayout>
アクティビティクラスは次のとおりです。
public class MyListActivty extends ListActivity {
private Context context = null;
private ListView list = null;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
list = (ListView)findViewById(Android.R.id.list);
//code to set adapter to populate list
View footerView = ((LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE)).inflate(R.layout.footer_layout, null, false);
list.addFooterView(footerView);
}
}
ここでの回答は少し時代遅れです。コードは同じままですが、動作にいくつかの変更があります。
public class MyListActivity extends ListActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
TextView footerView = (TextView) ((LayoutInflater) this.getSystemService(Context.LAYOUT_INFLATER_SERVICE)).inflate(R.layout.footer_view, null, false);
getListView().addFooterView(footerView);
setListAdapter(new ArrayAdapter<String>(this, getResources().getStringArray(R.array.news)));
}
}
addFooterView()
メソッドに関する情報
リストの下部に表示される固定ビューを追加します。
addFooterView()
が複数回呼び出された場合、ビューは追加された順に表示されます。この呼び出しを使用して追加されたビューは、必要に応じてフォーカスを取得できます。
上記の答えのほとんどは、非常に重要な点を強調しています-
addFooterView()
は、setAdapter()
を呼び出す前に呼び出す必要があります。これは、ListViewが、提供されたカーソルを、ヘッダービューとフッタービューにも対応するカーソルでラップできるようにするためです。
KitKatから、これは変更されました。
注:最初に導入されたとき、このメソッドはsetAdapter(ListAdapter)でアダプターを設定する前にのみ呼び出すことができました。 KitKat以降、このメソッドはいつでも呼び出すことができます。 ListViewのアダプターがHeaderViewListAdapterを拡張しない場合、WrapperListAdapterのサポートインスタンスでラップされます。
私はこれが非常に古い質問であることを知っていますが、ここで私の方法をグーグルで調べて、答えが100%満足ではないことを見つけました。なぜなら、gcl1が言及したようにリストに。
結論-ここでグーグルをするかもしれない他の人のために-私はここで次の提案を見つけました: ListFragmentの下に常に表示されるフッター
次のようにしてみてください。XMLで最初にリストされているボタン(または任意のフッター要素)に重点が置かれています。次に、リストが「layout_above」として追加されます。
<RelativeLayout>
<Button Android:id="@+id/footer" Android:layout_alignParentBottom="true"/>
<ListView Android:id="@Android:id/list" **Android:layout_above**="@id/footer"> <!-- the list -->
</RelativeLayout>
ListViewがListActivityの子である場合:
getListView().addFooterView(
getLayoutInflater().inflate(R.layout.footer_view, null)
);
(onCreate()内)
リストビューフッターを追加したいアクティビティは、リストビューフッターのクリック時にイベントを生成します。
public class MainActivity extends Activity
{
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ListView list_of_f = (ListView) findViewById(R.id.list_of_f);
LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View view = inflater.inflate(R.layout.web_view, null); // i have open a webview on the listview footer
RelativeLayout layoutFooter = (RelativeLayout) view.findViewById(R.id.layoutFooter);
list_of_f.addFooterView(view);
}
}
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:background="@drawable/bg" >
<ImageView
Android:id="@+id/dept_nav"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:background="@drawable/dept_nav" />
<ListView
Android:id="@+id/list_of_f"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:layout_below="@+id/dept_nav"
Android:layout_margin="5dp"
Android:layout_marginTop="10dp"
Android:divider="@null"
Android:dividerHeight="0dp"
Android:listSelector="@Android:color/transparent" >
</ListView>
</RelativeLayout>
この質問では、ベストアンサーはうまくいきません。その後、リストビューフッターを表示するこのメソッドを見つけました、
LayoutInflater inflater = getLayoutInflater();
ViewGroup footerView = (ViewGroup)inflater.inflate(R.layout.footer_layout,listView,false);
listView.addFooterView(footerView, null, false);
そして、新しいレイアウト呼び出しfooter_layoutを作成します
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:orientation="vertical"
Android:layout_width="match_parent"
Android:layout_height="match_parent">
<TextView
Android:id="@+id/tv"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:text="Done"
Android:textStyle="italic"
Android:background="#d6cf55"
Android:padding="10dp"/>
</LinearLayout>
動作しない場合は、この記事を参照してください hear