如何使选中的复选框的项目? [英] How to make selected checkbox item?

查看:121
本文介绍了如何使选中的复选框的项目?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我收到来自服务器的响应,我用的TextView,并在TextView中的点击监听我设alertdialog,在这里用户可以选择多个项目,但是当经由效应初探服务器,都没有选择的项目值见下文

图片

 公共类ButtonClickHandler实现View.OnClickListener {
    公共无效的onClick(查看视图){
        的ShowDialog(0);
    }
}
@覆盖
保护对话框onCreateDialog(INT ID){
    返回
            新AlertDialog.Builder(本)
                    .setTitle(语言)
                    .setMultiChoiceItems(_options,_selections,新DialogSelectionClickHandler())
                    .setPositiveButton(OK,新DialogBu​​ttonClickHandler())
                    。创建();
}公共类DialogSelectionClickHandler实现DialogInterface.OnMultiChoiceClickListener {
    公共无效的onClick(DialogInterface对话框中,单击诠释,布尔选择){
        Log.i(ME,_options [点击] +选择:+选择);
    }
}公共类DialogBu​​ttonClickHandler实现DialogInterface.OnClickListener {
    公共无效的onClick(DialogInterface对话框,点击INT){
        开关(点击){
            案例DialogInterface.BUTTON_POSITIVE:
                spmrg.setText();
                的for(int i = 0; I< _options.length;我++)
                {
                    如果(_selections [I])
                    {
                        如果(spmrg.getText()的toString()长度()方式> 0)
                        {
                            spmrg.setText(spmrg.getText()的toString()修剪()+,+ _选项[I]);
                        }其他
                        {
                            spmrg.setText(_options [I]);
                        }
                    }                }
                打破;
        }
    }
}
保护无效printSelectedPlanets(){
    的for(int i = 0; I< _options.length;我++){
        (+选择:ME,_options [I] + _selections [I])Log.i;
    }
}        受保护的CharSequence [] = _options {未婚,寡妇/鳏夫,离婚,隔离};
        保护布尔[] = _selections新的布尔[_options.length]


解决方案

比方说,你有你的JSON对象'未婚'。

所以,这是你会做什么 -

 的CharSequence [] = _options {未婚,寡妇/鳏夫,离婚
                隔离};
        的String [] = valueFromJson {未婚,离婚}; //你会通过
                                                                // 你的
                                                                //从价值
                                                                // JSON
                                                                //这个
                                                                //变量
        布尔[] = isSelected新的布尔[_options.length]
        布尔[] = _selections新的布尔[_options.length]公共布尔[] markChecked(){        INT [] =位置新INT [valueFromJson.length]
        的for(int i = 0; I< valueFromJson.length;我++){
            INT指数= Arrays.asList(_options).indexOf(valueFromJson [I]);
            位置[I] =指数;
            的System.out.println(索引++ valueFromJson [I]);        }
        INT K = 0;
        的for(int i = 0; I< isSelected.length;我++){
            如果(K< locations.length&放大器;&安培;位置[K] == I){
                isSelected [I] =真;
                ķ++;
            }其他{
                isSelected [I] = FALSE;
            }
            的System.out.println(isSelected [I]);
        }
        返回isSelected;    }

现在做到这一点 -

.setMultiChoiceItems(_options,markChecked(),新DialogSelectionClickHandler())

I am getting response from server,and I use textview,and on textview's click listener I set alertdialog,where user can select multiple items,but when values from server via reponse,items are not selected see images below

public class ButtonClickHandler implements View.OnClickListener {
    public void onClick(View view) {
        showDialog(0);
    }
}
@Override
protected Dialog onCreateDialog(int id) {
    return
            new AlertDialog.Builder(this)
                    .setTitle("Languages")
                    .setMultiChoiceItems(_options, _selections, new DialogSelectionClickHandler())
                    .setPositiveButton("OK", new DialogButtonClickHandler())
                    .create();
}

public class DialogSelectionClickHandler implements DialogInterface.OnMultiChoiceClickListener {
    public void onClick(DialogInterface dialog, int clicked, boolean selected) {
        Log.i("ME", _options[clicked] + " selected: " + selected);
    }
}

public class DialogButtonClickHandler implements DialogInterface.OnClickListener {
    public void onClick(DialogInterface dialog, int clicked) {
        switch (clicked) {
            case DialogInterface.BUTTON_POSITIVE:
                spmrg.setText("");
                for (int i = 0; i < _options.length; i++)
                {
                    if(_selections[i])
                    {
                        if(spmrg.getText().toString().length()>0)
                        {
                            spmrg.setText(spmrg.getText().toString().trim()+","+_options[i]);
                        }else
                        {
                            spmrg.setText(_options[i]);
                        }
                    }

                }
                break;
        }
    }
}
protected void printSelectedPlanets(){
    for( int i = 0; i < _options.length; i++ ){
        Log.i( "ME", _options[ i ] + " selected: " + _selections[i] );
    }
}

        protected CharSequence[] _options = {"UnMarried","Widow/Widower","Divorcee","Separated"};
        protected boolean[] _selections = new boolean[_options.length];

解决方案

Lets say you got 'unmarried' in your json object.

So, this is what you will do -

CharSequence[] _options = { "UnMarried", "Widow/Widower", "Divorcee",
                "Separated" };
        String[] valueFromJson = { "UnMarried", "Divorcee" }; // you will pass
                                                                // your
                                                                // value from
                                                                // JSON
                                                                // to this
                                                                // variable
        boolean[] isSelected = new boolean[_options.length];
        boolean[] _selections = new boolean[_options.length];

public boolean[] markChecked() {

        int[] locations = new int[valueFromJson.length];
        for (int i = 0; i < valueFromJson.length; i++) {
            int index = Arrays.asList(_options).indexOf(valueFromJson[i]);
            locations[i] = index;
            System.out.println(index + " " + valueFromJson[i]);

        }
        int k = 0;
        for (int i = 0; i < isSelected.length; i++) {
            if (k< locations.length && locations[k] == i) {
                isSelected[i] = true;
                k++;
            } else {
                isSelected[i] = false;
            }
            System.out.println(isSelected[i]);
        }
        return isSelected;

    }

now do this -

.setMultiChoiceItems(_options, markChecked(), new DialogSelectionClickHandler())

这篇关于如何使选中的复选框的项目?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆