【发布时间】:2018-09-27 09:23:13
【问题描述】:
该应用程序是关于使用复选框进行简单调查。复选框值来自 REST Api,如 ["option1", "option2"...]
我会将选中的复选框作为列表发布。除了删除未选择的项目外,所有设置和工作。如何从列表中获取和删除“未选择”数据? (用户可以进行更改)我尝试使用 List 和 HashMap,但无法成功。提前致谢!
public class MainActivity extends AppCompatActivity {
LinearLayout linear_checkbox;
List<String> answerList= new ArrayList<>();
List<String> checkedList = new ArrayList<>();
Map<String,String> map = new HashMap<>();
Button button_send;
int j;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//
linear_checkbox = (LinearLayout)findViewById(R.id.linear_checkbox);
button_send= (Button)findViewById(R.id.button_send);
//
answerList.add("Photography");
answerList.add("Music");
answerList.add("Skateboard");
listChoices(cevapList);
button_send.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//Toast.makeText(MainActivity.this, "LIST: "+"\n"+ checkedList.toString(), Toast.LENGTH_SHORT).show();
//Toast.makeText(MainActivity.this, ""+map.toString(), Toast.LENGTH_SHORT).show();
}
});
}
public void listChoices(List<String> textList){
textList = answerList;
for(j=0; j<textList.size(); j++){
final CheckBox cb = new CheckBox(getApplicationContext());
cb.setText(textList.get(j));
cb.setTextColor(Color.parseColor("#E7740D"));
linear_checkbox.addView(cb);
cb.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
if(b==true){
Toast.makeText(MainActivity.this, ""+cb.getText()+" selected", Toast.LENGTH_SHORT).show();
String key = String.valueOf(j);
//map.put(key,cb.getText().toString());
secilenlerList.add(cb.getText().toString());
}else{
Toast.makeText(MainActivity.this, ""+cb.getText()+" unselected", Toast.LENGTH_SHORT).show();
}
}
});
}
}
}
【问题讨论】:
-
您是使用回收站视图还是在线性布局中添加所有复选框?
-
当复选框被选中时,您似乎在列表中添加了 checkbox.getText(),但在未选中复选框时没有将其删除。