底部是怎么显示出EditText中输入的内容,CheckBox打勾的内容的,RadioButton选择的内容(我猜想的是TextView设置监控器实现显示上面的内容,如果不对的话,请帮我指出怎么做的)。如果有XML源代码和项目源代码更好。先谢谢各位。
建议参考databinding,能够比较好的解决这类问题
如楼上所说,如果贴主会MVVM,那可以在布局里使用databinding,捆绑数据,实时更新。不回的话,只能一个个来了
例如:
//监听姓名改变
EditText.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
updateResult();
}
@Override
public void afterTextChanged(Editable s) {
}
});
//监听性别男改变
man.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
updateResult();
}
});
//监听性别女改变
weman.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
updateResult();
}
});
//监听爱好改变
RadioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
switch (checkedId) {
R.id.music://音乐
//选中,判断是否存在,不存在,添加,反之不处理。
// 未选中,判断是否存在,不存在,不处理, 反之删除
if ( music.isSelected())
if (!hobbyList.contains("音乐")) hobbyList.add("音乐");
else{
//不处理
}
else if (hobbyList.contains("音乐")) hobbyList.remove("音乐");
break;
//以此类推。。。。设置美术 体育 园艺即可
}
updateResult();
}
});
//监听性别女改变
new CheckBox(getActivity()).setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
updateResult();
}
});
//爱好数组
ArrayList<String> hobbyList = new ArrayList<>();
public void updateResult() {
//监听改变获取设置姓名 性别 爱好
String name = EditText.getText().toString().trim();
//男还是女
boolean isWeman = weman.isSelected();
boolean isMan = man.isSelected();
String isSex=if(isWeman&&isMan)"不男不女" else if(isWeman )"女" else "男";
String hobby="";
for (String str:hobbyList) {
hobby=hobby+" "+str;
}
//结果
tv_result.setText(name+","+isSex+","+hobby);
}