SwitchCompat setOnCheckedChangeListener()在android中不起作用?

时间:2017-07-24 05:36:44

标签: android

我有一个应用程序,其中我使用SwitchCompat启用和禁用功能。我正在使用setOnCheckedChangeListener()来启用和禁用功能为此,我使用isChecked来检查是启用还是禁用了交换机。条件工作正常,但在我的情况下它永远不会落在其他条件。

代码: -

listViewHolder.switchCompat.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {            
@Override                                                                                                    
public void onCheckedChanged(final CompoundButton buttonView, final boolean isChecked) {                     
    if (isChecked) {                                                                                         
        new AlertDialog.Builder(mContext, R.style.AppCompatAlertDialogStyle).setTitle("Warning").setMessage("
            @Override                                                                                        
            public void onClick(DialogInterface dialog, int which) {                                         
                //Adding items in Dataset                                                                    
                AllAppList appList = listStorage.get(position);                                              
                whiteListModel.setName(appList.getName());                                                   
                whiteListModel.setPackName(appList.getPackName());                                           

                existingDataSet.add(whiteListModel);                                                         
                saveScoreListToSharedpreference(existingDataSet);                                            

                //Notifying adapter data has been changed.....                                               

                notifyDataSetChanged();                                                                      
                listViewHolder.switchCompat.setChecked(false);                                               
            }                                                                                                
        }).setNegativeButton("No", new DialogInterface.OnClickListener() {                                   
            @Override                                                                                        
            public void onClick(DialogInterface dialog, int which) {                                         
                listViewHolder.switchCompat.setChecked(false);                                               
            }                                                                                                
        }).show();                                                                                           

    } else {                                                                                                 
        Toast.makeText(mContext, "Removed", Toast.LENGTH_LONG).show();                                       
         existingDataSet.remove(position);                                                                   
         saveScoreListToSharedpreference(existingDataSet);                                                   
         notifyDataSetChanged();                                                                             
    }                                                                                                        

}                                                                                                            

1 个答案:

答案 0 :(得分:0)

进行更改。  1.使用

 listViewHolder.switchCompat.setChecked(false);    

而不是

  listViewHolder.switchCompat.setChecked(isChecked);    
  1. 在else部分,你也错过了设置按钮的状态 所以在else部分添加一行。

    listViewHolder.switchCompat.setChecked(器isChecked);