在Listview布局文件中加入choicemode = “singleChoice”即可实现点击item的选中效果。
如果不想要选中效果只需要myList.setSelector(new ColorDrawable(Color.TRANSPARENT));
但是默认效果的问题是单击某个item选中之后,再点击一次,并没有去掉选中的效果。
我目前的解决方法是通过position判断是否选中相当位置,再通过isSelected判断当前状态
如果position与上次点击的position相当,且上一次的状态是选中,则通过myList.setSelector(new ColorDrawable(Color.TRANSPARENT));
将背景设成原来的样子,并将isSelected状态改为Unselected
具体代码如下:
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
myList.setSelector(new ColorDrawable(getResources().getColor(R.color.gray_white)));
if (position==prePosition){
if(isSelected==UNSELECTED){
isSelected=SELECTED;
if (position>lock_listItems.size())
floatingActionButton.setVisibility(View.VISIBLE);
}
else{
isSelected=UNSELECTED;
floatingActionButton.setVisibility(View.INVISIBLE);
myList.setItemChecked(position,false);
//view.setBackgroundColor(getResources().getColor(R.color.white));
myList.setSelector(new ColorDrawable(Color.TRANSPARENT));
}
}
else {
isSelected=SELECTED;
if (position>lock_listItems.size())
floatingActionButton.setVisibility(View.VISIBLE);
else
floatingActionButton.setVisibility(View.INVISIBLE);
prePosition=position;
}
myList.forceLayout();
}
});
我觉得这个方法效率很低,如有更好的方法或官方api请告诉我。谢谢~~