0

トグルボタンでオン状態からオフ状態に切り替えたときにアラートを表示しようとしていました。サイド リスト ビューのアダプタでトグル ボタンを使用します。以下の私のコードを参照してください。

また、ユーザーがトグル ボタンでオン状態からオフ状態に切り替えたときにアラートを表示したいと考えています。IsChecked() を使用しているときは、常に on から off または off から n のいずれかで呼び出されますが、On から off に切り替えるだけで Alert を表示する必要があります。

XML:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="10dp" >

<TextView
    android:id="@+id/state_name"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true"
    android:text="Medium Text"
    android:textAppearance="?android:attr/textAppearanceMedium" />

<ToggleButton
    android:id="@+id/statetoggleButton"
    style="@style/on_off_togle_btn"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentRight="true"
    android:layout_alignParentTop="true"
    android:background="@drawable/togllebuttonselector" />

アダプタ クラスは次のとおりです。

private final Activity context;
    public final List<StatesModel> list;
    AlertDialog alertDialog;

    public List<StatesModel> getList() {
        return list;
    }

    public StateListAdapter(Activity context, List<StatesModel> list) {
        super(context, R.layout.states_list, list);
        this.context = context;
        this.list = list;
    }

    static class ViewHolder {
        protected TextView text;
        protected ToggleButton checkbox;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        View view = null;
        if (convertView == null) {
            LayoutInflater inflator = context.getLayoutInflater();
            view = inflator.inflate(R.layout.states_list, null);
            final ViewHolder viewHolder = new ViewHolder();
            viewHolder.text = (TextView) view.findViewById(R.id.state_name);
            viewHolder.checkbox = (ToggleButton) view
                    .findViewById(R.id.statetoggleButton);
            viewHolder.checkbox
                .setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {

                    @Override
                    public void onCheckedChanged(
                            final CompoundButton buttonView,
                            boolean isChecked) {
                        final StatesModel element = (StatesModel) viewHolder.checkbox
                                .getTag();

                          if (!isChecked) { AlertDialog.Builder builder =
                          new AlertDialog.Builder( context);
                          builder.setTitle("Warning"); String message =
                          "Title is here"
                          ; builder.setMessage(message);
                          builder.setPositiveButton("OK", new
                          DialogInterface.OnClickListener() {

                          @Override public void onClick( DialogInterface
                          dialog, int which) { alertDialog.dismiss();
                          element.setSelected(buttonView .isChecked()); }
                          }); builder.setNegativeButton("Cancel", new
                          DialogInterface.OnClickListener() {

                          @Override public void onClick( DialogInterface
                          dialog, int which) { buttonView.setChecked(true);
                          alertDialog.dismiss(); } }); alertDialog =
                          builder.create(); alertDialog.show(); } else





                        element.setSelected(buttonView.isChecked());

                    }
                });
            view.setTag(viewHolder);
            viewHolder.checkbox.setTag(list.get(position));
        } else {
            view = convertView;
            ((ViewHolder) view.getTag()).checkbox.setTag(list.get(position));
        }
        ViewHolder holder = (ViewHolder) view.getTag();
        holder.text.setText(list.get(position).getName());
        holder.checkbox.setChecked(list.get(position).isSelected());
        return view;
    }

On Checked 変更方法にチェックを入れてください。

4

1 に答える 1

0
ToggleButton toggle = (ToggleButton) findViewById(R.id.togglebutton);
toggle.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
        if (isChecked) {
            // The toggle is enabled
        } else {
            // The toggle is disabled
        }
    }
});

ある場合はチェックする書き込み、そうでない場合はチェックしないコードを使用

于 2012-12-10T07:16:59.567 に答える