作者:唯依爱时尚服饰 | 来源:互联网 | 2023-09-10 15:29
在我的一个项目中,使用了PullToRefresh的开源项目的下拉刷新的ListView。现在,我想在该ListView中使用一个上下文菜单,并且得到触发菜单的Item的Position
在我的一个项目中,使用了PullToRefresh的开源项目的下拉刷新的ListView。
现在,我想在该ListView中使用一个上下文菜单,并且得到触发菜单的Item的Position,用以进行各种处理。
1、在Activity的onCreate()方法里注册了我的ListView
1
| registerForContextMenu(mPTRlistview); |
2、Activity中覆写onCreateContextMenu
1 2 3 4 5 6
| @Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo info) {
super.onCreateContextMenu(menu, v, info);
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.menu_context,menu);
} |
3、Activity中覆写onContextItemSelected
1 2 3 4 5 6 7
| @Override
public boolean onContextItemSelected(MenuItem item) {
AdapterView.AdapterContextMenuInfo menuInfo = (AdapterView.AdapterContextMenuInfo) item.getMenuInfo();
int position = menuInfo.position;
。。。
。。。 |
结果是menuInfo.position是会产生空指针异常的。
各种找寻结果,可猜测是PullToRefersh自己定制的ListView没有覆写getContextMenuInfo
一个view要想能够生成自己的MenuInfo,必须要重新getContextMenuInfo这个函数。
public class PullToRefreshListView extends PullToRefreshAdapterViewBase
public abstract class PullToRefreshAdapterViewBase extends PullToRefreshBase implements OnScrollListener
然后在AbsListView里面有
1 2 3 4
| @Override
protected ContextMenuInfo getContextMenuInfo() {
return mContextMenuInfo;
} |
现在我不知道如何解决这个item.getMenuInfo返回NULL的问题了,有了解这方面的大哥指点一二吧~