如何使选中的复选框的项目? [英] How to make selected checkbox item?
本文介绍了如何使选中的复选框的项目?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我收到来自服务器的响应,我用的TextView,并在TextView中的点击监听我设alertdialog,在这里用户可以选择多个项目,但是当经由效应初探服务器,都没有选择的项目值见下文
图片
公共类ButtonClickHandler实现View.OnClickListener {
公共无效的onClick(查看视图){
的ShowDialog(0);
}
}
@覆盖
保护对话框onCreateDialog(INT ID){
返回
新AlertDialog.Builder(本)
.setTitle(语言)
.setMultiChoiceItems(_options,_selections,新DialogSelectionClickHandler())
.setPositiveButton(OK,新DialogButtonClickHandler())
。创建();
}公共类DialogSelectionClickHandler实现DialogInterface.OnMultiChoiceClickListener {
公共无效的onClick(DialogInterface对话框中,单击诠释,布尔选择){
Log.i(ME,_options [点击] +选择:+选择);
}
}公共类DialogButtonClickHandler实现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屋!
查看全文