给ListView添加HeaderView

不固定头部的实现。

在应用程序中把头部inflate出来,然后调用ListView的下面两个方法中的一个就可以(具体请参考API doc)

public void addHeaderView(View v);
public void addHeaderView(View v, Object data, boolean isSelectable);


就可以为ListView添加一个头部,它会随着ListView的滚动而滚动。但是要注意的是

2-1:addHeaderView必须得在setAdapter之前被调用

2-2:在AdapterView.OnItemClickListener的public void onItemClick(AdapterView<?> parent, View view, int position,long id)中,position中计算header的,就是说,你给ListView的setAdapter的数据会从headerCount开始计数,所以如果你想在自己的Adapter中取数据,你需要减去headerCount。

示例:

// SOME CODE init ListView and setHeader
ListView listView = getListView();
View header = LayoutInflater.from(this).inflate(R.layout.scrolled_header_view, null);
// Do another init to set content for header and add event handler.
listView.addHeaderView(header);
listView.setAdapter(myAdapter);


// 在响应public void onItemClick(AdapterView<?> parent, View view, int position,long id)时
position -= listView.getHeaderViewsCount(); // 需要减去headerCount
MyItem item = myAdapter.getItem(position);

 

你可能感兴趣的:(给ListView添加HeaderView)