0

チェックボックスをクリックした後、新しいビューを追加する必要があります。そして、私が望むのは、チェックボックスの変更された状態を表示してから新しいビューを表示することですが、チェックボックスをクリックすると、UI が数秒間停止し、同時に新しいビューとチェックボックスがチェックされているように表示されます。

私のコードはとてもシンプルです

{

checkbox = (CheckBox) findViewById(R.id.select_param_value_checkbox);

if (checkbox != null) {

    checkbox.setOnCheckedChangeListener(new OnCheckedChangeListener() {

        @Override
        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {

            onCheckboxChanged(isChecked);

        }

    });

}
}

protected void onCheckboxChanged(boolean isChecked) {
    //this listener is adding in constructor and creates in view where i want to add child
    on_change_listener.onFilterParamValueChanged(this);
}

そして、そのリスナーを使用したコードは次のとおりです。

public void onFilterParamValueChanged(MyClass obj) {

    addView(new MyView(getContext(), obj.getTitle()));
}

MyView のコード:

class MyView extends LinearLayout{

    private TextView title;

    public MyView(Context context, String text) {
        super(context);
        ViewGroup.inflate(context, R.layout.my_view, this);
        title = (TextView) findViewById(R.id.selected_filter_param_value_title);
        if (title != null) {
            title.setText(filter_value_data.toString());
        }
    }

}

@Diljeetのおかげで、私にとってうまくいくUPDソリューションは以下のコメントにあります。addView を Runnable に入れました

public void onFilterParamValueChanged(MyClass obj) {
    new Handler().post(new Runnable(){
        public void run() {
            addView(new MyView(getContext(), obj.getTitle()));
        }
    });

}    
4

0 に答える 0