复选框文本未显示在textview上

时间:2016-01-30 15:47:34

标签: android

我是Android技术的新手,我希望使用textview显示复选框的文本。 我认为问题出在TextUtils.join函数中 例如 如果我的清单是a,b,c,d。

我想显示文本视图,如

//文本视图字符串 你选择了a,b,c,d。

代码段:

public class Menu3 extends AppCompatActivity {

    CheckBox checkBox;
    CheckBox checkBox2;
    CheckBox checkBox3;
    CheckBox checkBox4;

    TextView tView;
    ArrayList<String> arrayList = new ArrayList<>();


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.menu3);

        checkBox  = (CheckBox)findViewById(R.id.checkBox);
        checkBox2 = (CheckBox)findViewById(R.id.checkBox2);
        checkBox3 = (CheckBox)findViewById(R.id.checkBox3);
        checkBox4 = (CheckBox)findViewById(R.id.checkBox4);

        tView = (TextView)findViewById(R.id.textView3);

        checkBox.setOnClickListener(ocl);
        checkBox2.setOnClickListener(ocl);
        checkBox3.setOnClickListener(ocl);
        checkBox4.setOnClickListener(ocl);

        String all = TextUtils.join(",", arrayList);

        tView.setText(all);
    }

    View.OnClickListener ocl = new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            boolean checked = ((CheckBox) v).isChecked();
            if(checked) {
                String text = null;
                switch (v.getId()) {
                    case R.id.checkBox:
                        text = checkBox.getText().toString();
                        Toast.makeText(Menu3.this, text + " checked.", Toast.LENGTH_SHORT).show();
                        arrayList.add(text);
                        break;

                    case R.id.checkBox2:
                        text = checkBox2.getText().toString();
                        Toast.makeText(Menu3.this, text + " checked.", Toast.LENGTH_SHORT).show();
                        arrayList.add(text);
                        break;

                    case R.id.checkBox3:
                        text = checkBox3.getText().toString();
                        Toast.makeText(Menu3.this, text + " checked.", Toast.LENGTH_SHORT).show();
                        arrayList.add(text);
                        break;

                    case R.id.checkBox4:
                        text = checkBox4.getText().toString();
                        Toast.makeText(Menu3.this, text + " checked.", Toast.LENGTH_SHORT).show();
                        arrayList.add(text);
                        break;
                }
            }
        }
    };
}

2 个答案:

答案 0 :(得分:0)

您首先设置文本,之后,您没有设置任何内容。每次向arraylist添加/删除字符串时都必须设置文本。

答案 1 :(得分:0)

问题是您正在setText中立即调用onCreate,并且在更改复选框时不会再次调用它。就个人而言,我设置了一个方法,当一个复选框被更改为处理所有这些

时,它会被调用

像这样的东西

private void updateTextView(String text) {
    Toast.makeText(Menu3.this, text + " checked.", Toast.LENGTH_SHORT).show();
    arrayList.add(text);
    String all = TextUtils.join(",", arrayList);
    tView.setText(all);
}

然后从您的所有OnClickListener调用该复选框

case R.id.checkBox:
    updateTextView(checkBox.getText().toString());
...