我想在checkbox
中存储选定的ArrayList
值。如果我选择三个,则有五个checkbox
,然后它们会存储在ArrayList
上。我使用String []ad = new String[5];
写的是不存储checkbox
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
List<String> mList = new ArrayList<>();
CheckBox android, java, python, php, unity3D;
Button submitButton;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
android = (CheckBox) findViewById(R.id.androidCheckBox);
android.setOnClickListener(this);
java = (CheckBox) findViewById(R.id.javaCheckBox);
java.setOnClickListener(this);
python = (CheckBox) findViewById(R.id.pythonCheckBox);
python.setOnClickListener(this);
php = (CheckBox) findViewById(R.id.phpCheckBox);
php.setOnClickListener(this);
unity3D = (CheckBox) findViewById(R.id.unityCheckBox);
unity3D.setOnClickListener(this);
submitButton = (Button) findViewById(R.id.submitButton);
submitButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Log.e("ArrayList Values*******",mList.toString());
}
});
}
@Override
public void onClick(View view) {
switch (view.getId()) {
case R.id.androidCheckBox:
if (android.isChecked()) {
mList.add(String.valueOf(android.getText()));
Log.e("Android*******",mList.toString());
}
break;
case R.id.javaCheckBox:
if (java.isChecked()) {
mList.add(String.valueOf(java.getText()));
Log.e("Java*******",mList.toString());
}
break;
case R.id.phpCheckBox:
if (php.isChecked()) {
mList.add(String.valueOf(php.getText()));
Log.e("PHP*******",mList.toString());
}
break;
case R.id.pythonCheckBox:
if (python.isChecked()){
mList.add(String.valueOf(python.getText()));
Log.e("Python*******",mList.toString());
}
break;
case R.id.unityCheckBox:
if (unity3D.isChecked()){
mList.add(String.valueOf(unity3D.getText()));
Log.e("Unity*******",mList.toString());
}
break;
}
}
}
答案 0 :(得分:1)
只需创建List
并在点击事件触发时添加值:
final List<String> mList = new ArrayList<>();
mList.add("Your value");
注意:考虑实施onCheckChangeListener
intead onClickListener
来处理您的复选框选择事件。
答案 1 :(得分:0)
不,这不太正确。
我强烈建议在用户按下submitButton
时创建数组。否则,如果他们检查了一些框,并且
当他们再次看到你的用户界面时,它会被正确地重新创建 - 用户选中的所有方框仍然会被检查,但你的数组将是空的!我建议像
这样的东西submitButton = (Button) findViewById(R.id.submitButton);
submitButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String []ad = new String[5];
if (android.isChecked()) {
ad[0] = (String) android.getText();
}
if (java.isChecked()) {
ad[1] = (String) java.getText();
}
...
}
});
如果您在提交用户选项的上下文之外关注ad
,最佳做法是将其保存在Bundle
public void onSaveInstanceState(Bundle outState) {}
中
并在onCreate(Bundle savedInstanceState){}
中获取并设置它。这样,即使在方向更改或破坏活动的系统上,您也不会丢失数据。有关如何执行此操作的详细信息,请参阅this answer。