#android #checkbox
#Android #флажок
Вопрос:
У меня есть флажок в моем макете. Я добавляю его динамически в код. Все выглядит нормально, но флажок не является интерактивным. Вот мой xml для флажка :
<CheckBox xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@ id/pref_calendar_choose_"
style="@style/PreferencesText"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="#00ffffff"
android:checkMark="?android:attr/listChoiceIndicatorMultiple"
android:checked="false"
android:enabled="true"
android:focusable="false"
android:focusableInTouchMode="false"
android:clickable="true"
android:gravity="center_vertical" />
и вот действие с циклом, в котором я добавляю флажки :
public class PreferencesActivity extends BaseActivity implements MenuHandler{
private static final String TAG = PreferencesActivity.class.getSimpleName();
private ActionBarDrawerToggle mDrawerToggle;
List<CalendarDB> mCalendarList;
@Bind(R.id.drawer_layout)
DrawerLayout mDrawerLayout;
@Bind(R.id.pref_calendar_choose)
public LinearLayout mPrefCalendarChoose;
@Bind(R.id.toolbar)
Toolbar mToolbar;
private View.OnClickListener listener = new View.OnClickListener() {
@Override
public void onClick(View v) {
CheckBox checkedTextView = (CheckBox) v;
CalendarDB.modify(mCalendarList.get(checkedTextView.getId()), !checkedTextView.isChecked());
BusStation.getInstance().post(new RefreshCalendarDataEvent());
}
};
@Override
protected void afterBind() {
mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, mToolbar, R.string.open, R.string.close);
mDrawerLayout.addDrawerListener(mDrawerToggle);
mDrawerToggle.syncState();
mToolbar.setNavigationIcon(R.drawable.menu);
refreshView();
}
@Override
protected int getlayoutid() {
return R.layout.activity_preferences;
}
@Subscribe
public void refreshEvents(RefreshCalendarDataEvent event) {
refreshView();
}
private void refreshView() {
String userEmail = PreferencesManager.User.getEmail();
mCalendarList = CalendarDB.getAll(PreferencesManager.User.getEmail());
mPrefCalendarChoose.removeAllViews();
CheckBox checkBox;
for (int i = 0; i < mCalendarList.size(); i ) {
checkBox = (CheckBox) getLayoutInflater().inflate(R.layout.item_choose_calendar, null);
CalendarDB calendarDB = mCalendarList.get(i);
checkBox.setChecked(calendarDB.selected);
checkBox.setText(calendarDB.summary);
checkBox.setId(i);
checkBox.setOnClickListener(listener);
/* if(calendarDB.summary.contains(userEmail)) {
calendarDB.selected = true;
}
else {
calendarDB.selected = false;
}*/
Log.e(TAG, "refreshView: " calendarDB.selected );
if (checkBox.getText() != "") ;
mPrefCalendarChoose.addView(checkBox);
}
}
Комментарии:
1. Пожалуйста, опубликуйте полный код
2. Я отредактировал сообщение.
3. пожалуйста, попробуйте setoncheckedchanged listener
4. Я пытался. Та же проблема.
Ответ №1:
удалите focusable из вашего XML-макета
android:focusable="false" android:focusableInTouchMode="false"
и он должен работать