ListViewにフッターを追加する方法は?
-
27-09-2019 - |
質問
アプリケーションを開発しています。アプリケーションでは、dom parsingを使用してデータを表示するためにlistViewを使用しています。リストビューでフッターをクリックすると、追加のデータ追加ビューを追加します。プロセス、image1とimgae2.iを参照してください。
「もっとニュース」のようなfig1-footer
fig2-addd listViewに追加の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);
}
}
他のヒント
私はこれが非常に古い質問であることを知っていますが、私はここで自分の道をグーグルで検索し、GCL1が言及したように、100%満足のいくものではない答えを見つけました。 「リストに。
結論 - ここで彼らの道をグーグルで検索するかもしれない他の人のために - 私はここで次の提案を見つけました: 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>
ここの答えは少し時代遅れです。コードは同じままですが、動作にいくつかの変更があります。
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のサポートインスタンスで包まれます。
ListViewがListActivityの子である場合:
getListView().addFooterView(
getLayoutInflater().inflate(R.layout.footer_view, null)
);
(内部oncreate())
ListViewフッターを追加するアクティビティと、ListViewフッタークリックでイベントを生成しました。
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>
この質問では、ベストアンサーは私にとってはうまくいきません。その後、ListViewフッターを表示するこの方法を見つけました。
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>
仕事がない場合は、この記事を参照してください 聞く