Bekommen Position Von Benutzerdefinierten Adapter

Seit PreferenceFragment steht nicht in der support-Bibliothek, die ich erstellt eine ListFragment zeigen eine Liste der Einstellungen zu Benutzer, da ich nicht über eine Menge von Einstellungen zu zeigen. Ich habe auch ein custom ArrayAdapter anpassen die Elemente der Liste. Ich brauche, um zu behandeln, wenn ein Benutzer checkt eine der CheckBoxs, so kann ich sparen, Wetter oder nicht, es wurde geprüft. Also wenn Ihr kontrolliert, dann wird es bleiben aktiviert, bis der Benutzer uncheckes es. Dies wäre viel einfacher, wenn es war nur eine Einstellung in der Liste, aber es gibt 2 für Sie jetzt, und ich könnte Sie benötigen, um mehr hinzuzufügen. Also ich muss in der Lage sein zu bestimmen, welche überprüft wurde. Ich kann Sie behandeln, überprüfen, und deaktivieren Sie fein ich kann Sie nicht einfach einen Weg finden, zu bestimmen, welche überprüft wurde.

DEN CODE

Hier ist meine Liste posten:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >

<LinearLayout android:layout_width="match_parent" android:layout_height="match_parent"
                      android:orientation="horizontal">

<TextView android:id="@+id/pref_edit_text" android:layout_width="0dp" android:layout_height="30dp"
              android:layout_weight="5"/>
    <CheckBox android:id="@+id/pref_check_box" android:layout_width="0dp" android:layout_height="wrap_content"
              android:layout_weight="1" android:onClick="onCheckBoxClick"/>
    </LinearLayout>

<TextView android:id="@+id/pref_edit_text2" android:layout_width="match_parent"
              android:layout_height="50dp"/>

Hier ist getView() in meinem adapter:

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        //mIntCheckBoxPosition = position;
        Typeface tf = Typeface.createFromAsset(mMainActivity.getAssets(), "fonts/ArchitectsDaughter.ttf");
        LayoutInflater inflater = mMainActivity.getLayoutInflater();
        View view = inflater.inflate(mIntLayoutId, parent, false);

        TextView text = (TextView) view.findViewById(R.id.pref_edit_text);
        text.setText(mStringArrayTitle[position]);
        text.setTypeface(tf, Typeface.BOLD);

        text = (TextView) view.findViewById(R.id.pref_edit_text2);
        text.setText(mStringArraySubTitle[position]);
        text.setTypeface(tf);

        mMainActivity.setTitle("Settings");

        return view;
    }

Und hier ist, wo ich handle, wenn ein CheckBox geklickt wird, die in der ListFragment:

    public void onCheckBoxClick(View view) {
        boolean isChecked = ((CheckBox) view).isChecked();
        Editor editor = mMainActivity.getSharedPreferences(PREF_KEY_CHECK_BOX, Activity.MODE_PRIVATE).edit();

        switch (view.getId()) {
            case R.id.check_box :
                if (isChecked) {
                    editor.putBoolean(PREF_KEY_ROUNDING, true).commit();
                }
                else {
                    editor.putBoolean(PREF_KEY_ROUNDING, false).commit();
                }
                break;
            }
        }
    }

Hier ist, was meine Einstellungen sehen so aus:

Bekommen Position Von Benutzerdefinierten Adapter

WAS ICH VERSUCHT HABE

1. Ich habe versucht, eine variable in den adapter an der position und mit einem getter, um die position, aber das gibt nur die position des letzten Elements angezeigt.

2. Ich habe versucht, mit einigen der Methoden in ListFragment um die position des CheckBox aber immer -1 zurück.

3. Ich habe eine Menge Googeln und die Suche SO, aber ich habe nicht in der Lage gewesen, eine Lösung zu finden, diese zu arbeiten.

Also wenn jemand weiß, eine Art und Weise kann ich die position der CheckBox oder andere Möglichkeiten, wie ich vielleicht in der Lage zu sagen, was man auf den geklickt wurde, werde ich ewig dankbar sein.

  • Irgendeinem Grund Sie nicht verwenden können, Aktion SherlockBar? es würde sparen Sie eine Menge Kopfschmerzen, da es so ziemlich eine Vorlage für die Einstellungen fragment. Plus eine native 4.0 Aussehen.
InformationsquelleAutor Jason Crosby | 2013-04-03
Schreibe einen Kommentar