如何在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>