チェックボックスをクリックした後、新しいビューを追加する必要があります。そして、私が望むのは、チェックボックスの変更された状態を表示してから新しいビューを表示することですが、チェックボックスをクリックすると、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()));
}
});
}