【问题标题】:How to add footer view dynamically如何动态添加页脚视图
【发布时间】:2012-01-18 21:47:18
【问题描述】:

我创建了一个ListView 并添加了带有addHeaderView 的标题,然后我在ListActivity 中调用了setListAdapter。知道如何在调用setListAdapter 后动态地addFooterView 吗?

回答: 我在列表视图中添加了页眉视图和页脚视图(实际上是按钮), 但是他们两个我都使用 wrap_content 高度包装到 FrameLayout 中,然后当我不需要显示标题按钮时,我只需 setVisibility(View.GONE) 和 FrameLayout 包装到 0 高度并且视觉上不可见(效果相同好像我会调用 removeHeaderView),如果我需要再次显示它,我 setVisibilty(View.VISIBLE) 并显示它(与 addHeaderView 相同的效果 - 这在调用设置列表适配器后当然是不可能的)

这里讨论过: Hide footer view in ListView?

【问题讨论】:

  • 看看我的编辑答案。试试这个,让我知道发生了什么。

标签: android listview listadapter


【解决方案1】:
View header = getLayoutInflater().inflate(R.layout.header, null);
View footer = getLayoutInflater().inflate(R.layout.footer, null);
ListView listView = getListView();

listView.addHeaderView(header);
listView.addFooterView(footer);    
setListAdapter(new ArrayAdapter<String>(this,
            android.R.layout.simple_list_item_single_choice,
            android.R.id.text1, names));

【讨论】:

  • 09-25 18:43:52.953: 错误/AndroidRuntime(229): java.lang.IllegalStateException: 无法将页脚视图添加到列表 -- setAdapter 已被调用。
  • @webaloman - 看看我编辑的答案。试试这个,让我知道会发生什么。
  • 请记住,页脚和页眉也被索引为列表元素。因此,如果您单击页脚下方列表中的第一项,则该项索引将为 1,但不是 0。
【解决方案2】:

你必须这样做

View header = (View)getLayoutInflater().inflate(R.layout.header,null);

SimpleAdapter myAdapter=new SimpleAdapter(this,myList,R.layout.transactionvalues,
new String[] {"transaction_date_time","user_name","site_name","machine_name"},new int[] {R.id.Date_Time,R.id.User,R.id.Site,R.id.Machine});

if(header == null){
    lst.removeHeaderView(header);
}else
{
    lst.addHeaderView(header,null,false);
}

lst.setAdapter(myAdapter);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-12-03
    • 2011-01-17
    • 2011-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-09
    • 2019-12-10
    相关资源
    最近更新 更多