【问题标题】:How to make the header or footer of a ListView not clickable如何使 ListView 的页眉或页脚不可点击
【发布时间】:2012-09-18 16:02:06
【问题描述】:

我正在使用setHeaderView()setFooterView() 以及ViewInflater 方法将页脚和页眉视图添加到ListView。这工作得很好。

但是如何防止页眉或页脚视图触发onListItemClick 事件?当然,我可以捕捉事件并检查它是来自页眉还是页脚,但这只能解决问题的一部分,因为单击时页眉和页脚仍然保持焦点。

【问题讨论】:

    标签: android listview android-listview


    【解决方案1】:

    只需使用ListView#addHeaderView(View v, Object data, boolean isSelectable); 和匹配的addFooter() 方法。


    Object data参数的用途。

    ListView源代码将data参数描述为:

    支持视图的数据。这是从 ListAdapter#getItem(int) 返回的。

    这意味着如果我使用listView.getAdapter().getItem(0);,它将从我们的标头返回data 对象。


    我会用一个例子来详细说明:

    listView = (ListView) findViewById(R.id.list);
    String[] array = new String[] {"one", "two", "three"};
    adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, array);
    

    接下来让我们添加一个标头并设置适配器:

    listView.addHeaderView(view, "Potato", false);
    listView.setAdapter(adapter);
    

    稍后如果我们问:

    Log.v("ListAdapter", listView.getAdapter().getItem(0));  // output: "Potato" 
    Log.v("ArrayAdapter", adapter.getItem(0));               // output: "one"
    

    【讨论】:

    • 啊太棒了!有用。还有一个问题,数据对象是干什么用的?目前我将数据参数设置为空。但是当我将一个真实的对象传递给它时,它会发生什么?
    • 现在我不知道,我正在阅读源代码并在网上查看它是如何工作的。如果我弄清楚了,我会发布更新!
    猜你喜欢
    • 1970-01-01
    • 2012-10-08
    • 1970-01-01
    • 1970-01-01
    • 2014-08-02
    • 1970-01-01
    • 2015-11-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多