您的位置:首页 > 其它

ListView添加底部按钮的方法

2012-08-13 10:38 127 查看
在开发中我们可能会遇到这样的需求 在listview最下面添加一个按钮 但是这个按钮不是一直显示在屏幕上

它就像listview 最后一个view 根据用户的移动来显示 应该怎么实现呢 这里要用到一个方法:
Button buttonFooter = new Button(this);
buttonFooter.setText("下面的按钮");

buttonFooter.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {
}
});
listView.addFooterView(buttonFooter);
这种方式比较简单,但是需要注意的是,这里添加的Button按钮是一个独立的组件,没有父组件,但是有时我们有更复杂需求,要自定义复杂的控件,因此你想要添加的这个Button或者TextView可能不是独立的,它处在一个XML文件中。这种情况下的处理方式就和上面的不一样了,如果用上面的方式直接添加的话,就会报错。下面是来自StackOverFlow的错误案例:
View view mInflater.inflate(R.layout.list_load_more_row, null);

TextView footer = (TextView) view.findViewById(R.id.loadMore);

getListView().addFooterView(footer);
这样处理报告的错误是:
08-13 10:21:09.990: E/AndroidRuntime(3512): 	at android.widget.ListView.clearRecycledState(ListView.java:522)
更多信息,请移步:http://stackoverflow.com/questions/3227182/android-adding-footer-to-listview-addfooterview/11927539#11927539

这里正确的作法是把整个父组件全部添加到ListView中,而不是只添加一个Button,虽然你只需要这一个Button,代码如下:
// add footer view(search more button) for app list
View footerView = getLayoutInflater().inflate(R.layout.search_footer,
mContentList, false);
LongButton mSearchMoreBtn = (LongButton) footerView
.findViewById(R.id.searchmore_btn);
mSearchMoreBtn.setText(R.string.search_moreapp);//在线搜索
mSearchMoreBtn.setBackgroundResource(R.drawable.btn_long_selector);
mSearchMoreBtn.setOnClickListener(mSearchMoreBtnListener);

footerView.setOnClickListener(mLoadMoreAppsListener);
mContentList.addFooterView(footerView);
监听器的代码:
OnClickListener mSearchMoreBtnListener = new OnClickListener() {

@Override
public void onClick(View arg0) {
saveUserLog(4);

Intent i = new Intent(getApplicationContext(),
SearchedResultActivity.class);

i.putExtra("key", mSearchInput.getText().toString().trim());

startActivityForResult(i, REQUEST_SEARCH_RESULT);
}

};


我这里对mLoadMoreAppsListener监听器的处理方法是一个空方法,你可以根据需要定制。

最后,我这种处理方式也不是最佳的方式,你要是有好的方法,欢迎交流。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: