【问题标题】:Android: Keeping track of checked values in multi select dialogAndroid:在多选对话框中跟踪检查的值
【发布时间】:2012-04-21 13:38:53
【问题描述】:

我有一个按钮,点击它会显示一个多选对话框。我用数据库中的值加载对话框。我想跟踪检查的对话框中的值。我怎么做??是否可以在最初加载对话框时检查某些服务。 我的 ButtonOnClickHandler 代码如下:

class ButtonClickHandler implements View.OnClickListener {      
    public void onClick( View view ) {  
        int i=0;  
        List<Service> svc = EditBusinessdh.getServiceList();  
        Log.v(TAG, "Setting svc size:"+ svc.size()  );  
        serName = new ArrayList<String>();  
        for(i=0;i<svc.size();i++)  
        {  
        serName.add(svc.get(i).toString());                 
        Log.v(TAG, "service ="+svc.get(i));  
        }  
        showDialog(0);  
    }  
}  

@Override  
protected Dialog onCreateDialog(int id)   
{  
String[] ser =  serName.toString().substring(1,serName.toString().length()-1).split(",");  
return new AlertDialog.Builder( this )  
    .setTitle( "Select Services" )  
    .setMultiChoiceItems(ser, selected, new DialogSelectionClickHandler())  
    .setPositiveButton( "Ok", new DialogButtonClickHandler() )  
    .create();  
}  

public class DialogSelectionClickHandler implements DialogInterface.OnMultiChoiceClickListener  
{  
public void onClick( DialogInterface dialog, int clicked, boolean checked )  
{  
    String firstSelected= serName.set(clicked, ser.toString());  
}  
}  


public class DialogButtonClickHandler implements DialogInterface.OnClickListener  
{  
    public void onClick( DialogInterface dialog, int clicked )  
    {  
    switch( clicked )  
    {  
        case DialogInterface.BUTTON_POSITIVE:  
            closeContextMenu();  
            break;  

        case DialogInterface.BUTTON_NEGATIVE:  
            break;  
    }  
    }  
}  

@Override  
public void closeContextMenu() {  
    super.closeContextMenu();       
}  

谢谢

【问题讨论】:

    标签: android dialog multi-select


    【解决方案1】:

    创建一个 ArrayList,在选择选项时将其添加到列表中,在取消选择时将其从列表中删除。就是这样

    ArrayList<String> checkedValue= new ArrayList<String>();
    
    
    public void onClick( DialogInterface dialog, int clicked, boolean checked )  
    {  
          if (isChecked) 
                {
                    if(!checkedValue.contains(ser[which]))
                        checkedValue.add(ser[which]);
                } 
                else
                {
                  if(checkedValue.contains(ser[which]))
                      checkedValue.remove(ser[which]);
                }
    
    } 
    

    【讨论】:

      猜你喜欢
      • 2021-06-10
      • 1970-01-01
      • 1970-01-01
      • 2017-06-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多