通常情况下可以根据位置arg2从adpter数据源中获取,
但是如果listView中加上1个head元素之后arg2实际上从1开始了
解决办法1:
把arg2减去1
解决办法2:推荐
FAddress ad = (FAddress) arg0.getItemAtPosition(arg2);
或者
OrderTempInfo order = (OrderTempInfo) arg0.getAdapter().getItem(arg2);
- //默认可点击的HeaderView
- View headView = inflater.inflate(R.layout.search_top, null);
- mListView.addHeaderView(headView)
- //这样可以让HeaderView不可点击
- mListView.addHeaderView(headView ,null,false);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) { try{ FAddress ad = (FAddress) arg0.getItemAtPosition(arg2); // FAddress ad = (FAddress) mAddressListAdapter.getItem(arg2-1); Intent intent = new Intent(); intent.putExtra(ExtraName.ADDRESS_ITEM, ad); if (mComefromOrder) { View defaultView = mAddressListAdapter.getDefaultView(); if (defaultView != null) { defaultView.setBackgroundColor(getApplicationContext().getResources().getColor(android.R.color.transparent)); } setResult(RESULT_OK, intent); finish(); } }catch (Throwable e){ e.printStackTrace(); } } });