如何在ListView中添加页脚?

我正在开发一个应用程序,在我的应用程序中,我使用ListView来显示数据使用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); } } 

我知道这是一个非常古老的问题,但我在这里搜索了一下,发现答案并不是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> 

这里的答案有点过时了。 尽管代码保持不变,但行为有一些变化。

 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()之前,必须调用setAdapter() 。这样ListView就可以将提供的光标setAdapter()一个也会占据页眉和页脚视图的光标。

从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>