再次单击后如何取消我单击的ListItem的选定状态?

时间:2018-09-06 06:38:55

标签: java android listview

在我的应用中,我有一个listView,其项目为选择模式单项选择。当我单击一个项目时,其背景颜色变暗。当我再次单击它时,它仍然是深色背景。再次单击后,我希望它恢复到以前的背景色。

现在,我的解决方案是每次单击项目时都使用myList.setSelector(new ColorDrawable(Color.TRANSPARENT))函数。

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();
}

我认为这种解决方案不是那么有效。有更好的解决方案吗?

1 个答案:

答案 0 :(得分:0)

采取arraylist。 首先通过使用来检查点击位置是否位于arraylistCollections.contains(position); 如果返回true,则不执行任何操作。否则做你的东西。您可以执行以下操作:

ArrayList<Integer> myPositionClickedList = new ArrayList<Integer>(); // this should be as global variable
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {   
    if(!myPositionClickedList.contains(position)) {
        myList.setSelector(new ColorDrawable(getResources().getColor(R.color.gray_white)));

        //do your stuff here........
        myPositionClickedList.add(position);
    }  
}