mListView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> adapterView, View view, int i, long l) {
registerForContextMenu(mListView);
return false;
}
});
return contextView;
}
@Override
public void onCreateContextMenu(ContextMenu contextMenu, View view, ContextMenu.ContextMenuInfo contextMenuInfo) {
contextMenu.setHeaderTitle("运动治疗");
contextMenu.add(0, 0, 0, "完成");
}
@Override
public boolean onContextItemSelected(MenuItem item) {
AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) item.getMenuInfo();
int id=info.position;
switch (item.getItemId()) {
case 0:
// UpdateList(id);
View view= info.targetView.findViewById(R.id.status);
//imageView=(ImageView)contextView.findViewById(R.id.status);
view.setBackgroundResource(R.drawable.wancheng);
break;
}
return super.onContextItemSelected(item);
}
为什么我长按改变的不是我选中的item
------解决方案--------------------
我前面的回答是有错的,你的做法没有问题。(没有实例调试,抱歉)
实际问题在于 你改变了某一项上的ImageView 的值,
然而ListView 是个item 不断重用的控件,你改了item 1 ,往下滚,item5出现,item1 消失,
这时item5是重用item1的控件, 此时图片是你改过的
你必须额外保存imageView的图片状态,并在getView中重新绑定。