Alle Checkboxes anhaken

  • Antworten:28
  • OffenNicht stickyBentwortet
  • Forum-Beiträge: 368

11.09.2016 21:14:28 via Website

Hallo Zusammen,

Ich will, dass wen diese Checkbox angehakt ist, alle anderen CheckBoxes auch angehakt werden.

            <CheckBox
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="Alles anzeigen"
            android:id="@+id/allesanzeigen"
            android:layout_alignParentLeft="true"
            android:layout_alignParentStart="true"
            android:clickable="true"
            android:enabled="true"
            android:onClick="onClick"
            android:checked="false"/>

        CheckBox allesanzeigen = (CheckBox)findViewById(R.id.allesanzeigen);

    allesanzeigen.setOnClickListener(new DialogInterface.OnClickListener() {
        public void onClick(View v) {
            if(allesanzeigen.isChecked())
            {
                // alles anhaken
            }
            if(!allesanzeigen.isChecked())
            {
                //  alles enthaken
            }

        }
    });

Was muss ich hinzufügen, sodass es klappt?

Vielen Dank!

Liebe Grüße
Fabian

Liebe Grüße Fabian :)

  • Forum-Beiträge: 2.214

11.09.2016 21:30:36 via Website

Hallo Fabian ,

es gibt bekanntlich mehrere Wege zum Ziel .

Grundssätzlich kannst du den CheckStatus einer CheckBox mit .setChecked() setzen.

Damit du auch dynamisch auf alle zu "setzenden" Checkboxen in einem Rutsch zugreiffen kannst, würde ich diese in einem Array verwalten und dann einmal durchlaufen.

P.S wenn du ein Bespiel benötigst, dann lass es mich wissen - müsste ich dann runtertippen

lg
Stefan

— geändert am 11.09.2016 21:38:57

Liebe Grüße - Stefan
[ App - Entwicklung ]

Pascal P.
  • Mod
  • Blogger
  • Forum-Beiträge: 9.311

11.09.2016 21:38:03 via App

Oder ohne Array das Layout in einer Schleife durchgehen

— geändert am 11.09.2016 21:38:17

LG Pascal //It's not a bug, it's a feature. :) ;)

  • Forum-Beiträge: 368

11.09.2016 22:16:14 via Website

swa00

P.S wenn du ein Bespiel benötigst, dann lass es mich wissen - müsste ich dann runtertippen

Das wäre klasse!!

LG Fabian :)

Liebe Grüße Fabian :)

  • Forum-Beiträge: 2.214

11.09.2016 22:27:24 via Website

Deklaration :

ArrayList < CheckBox > myCheckBoxes;

Im OnCreate

myCheckBoxes = new ArrayList ();
CheckBox check1 = (CheckBox) findViewById(R.id.checkBox1);
myCheckBoxes.add (check1); // Checkbox dem Array hinzufügen
CheckBox check2 = (CheckBox) findViewById(R.id.checkBox2);
myCheckBoxes.add (check2); // Checkbox dem Array hinzufügen
CheckBox check3 = (CheckBox) findViewById(R.id.checkBox3);
myCheckBoxes.add (check3); // Checkbox dem Array hinzufügen

und wenn du sie alle setzen magst

for (int i = 0; i < myCheckBoxes.size();i++) // size = gibt die Anzahl der Checkboxen im Array zurück
{
CheckBox ch_tmp = (CheckBox) myCheckBoxes.get (i);
ch_tmp.setChecked(true); // false für unselect
}

Viel Erfolg

lg
Stefan

— geändert am 11.09.2016 22:38:08

Liebe Grüße - Stefan
[ App - Entwicklung ]

  • Forum-Beiträge: 368

12.09.2016 21:27:55 via Website

Vielen Dank!

Gibt es aber auch eine Möglichkeit, bei der alle Checkboxen im ListView angehakt werden, ohne, dass man jede CheckBox dem Array hinzufügen muss?

Liebe Grüße
Fabian :)

Liebe Grüße Fabian :)

Pascal P.
  • Mod
  • Blogger
  • Forum-Beiträge: 9.311

12.09.2016 21:34:27 via App

Geht, alle Items durchgehen, die Checkbox suchen und dann status setzen.

— geändert am 12.09.2016 21:34:37

LG Pascal //It's not a bug, it's a feature. :) ;)

  • Forum-Beiträge: 368

14.09.2016 17:08:02 via Website

Hallo,

Reicht der Code Snippte oder würdet ihr mir lieber etwas anderes empfehlen?

private OnClickListener checkAllCheckboxes = new OnClickListener(){
public void onClick(View v) {
    ListView lv = getListView();
    int size = lv.getAdapter().getCount();
    boolean checked = lv.isItemChecked(0);
    for(int i=1; i<size; i++) {
      lv.setItemChecked(i, checked);
    }
}

};

Liebe Grüße Fabian :)

Liebe Grüße Fabian :)

Pascal P.
  • Mod
  • Blogger
  • Forum-Beiträge: 9.311

14.09.2016 17:10:40 via Website

Reichen tut das schon, aber ich glaube du hast nicht verstanden was das tut...

LG Pascal //It's not a bug, it's a feature. :) ;)

  • Forum-Beiträge: 368

14.09.2016 17:21:46 via Website

Pascal P.

Reichen tut das schon, aber ich glaube du hast nicht verstanden was das tut...

Ich habe das so verstanden, dass bei anhaken der CheckBox "checkAllCheckBoxes" der ListView durchgegangen wird und alle dort existierenden CheckBoxes der Reihe nach angehakt werden.

Liebe Grüße Fabian :)

Pascal P.
  • Mod
  • Blogger
  • Forum-Beiträge: 9.311

14.09.2016 18:15:07 via Website

nicht ganz...
Du liest den status des ersten Items:
boolean checked = lv.isItemChecked(0);
und schreibst diesen auf alle anderen auch.
d.h. wenn die erste Box angehakt ist, werden alle anderen das auch, ist die nicht angehakt, werden alle anderen auch nicht angehakt.
Wein weglassen dieser checked boolean und statdessen den fixen wert true reicht schon völlig

— geändert am 14.09.2016 18:15:13

LG Pascal //It's not a bug, it's a feature. :) ;)

  • Forum-Beiträge: 368

16.09.2016 18:02:36 via Website

Was bedeutet dieser Error?

aapt.exe finished with non-ziro exit value 1

— geändert am 16.09.2016 18:18:30

Liebe Grüße Fabian :)

  • Forum-Beiträge: 368

16.09.2016 23:39:40 via Website

Gerade bin ich dabei einen Splashscreen zu erstellen.
Drawable ist hinzugefügt. Xml Datei ist fertig. Java Datei ist fertig.
Es wird kein SplashScreen angezeigt, es fehlt also noch der Befehl dazu aus der Java Home Datei, oder?
Wenn ja, wie muss dieser aussehen?

Liebe Grüße Fabian :)

  • Forum-Beiträge: 2.214

17.09.2016 00:12:52 via Website

Hallo Fabian,

wie hast du denn den SplashScreen erstellt ?

IdR ist das eine Activity, die in die Manifest als MAIN definiert wird und sich nach einer Zeit X selbst
beendet und dann die MainActivity per Intent aufruft.

< activity android:name=".SplashActivity" > < ------- HIER kommt der Splash rein
< intent-filter >
< action android:name="android.intent.action.MAIN" />
< category android:name="android.intent.category.LAUNCHER" />
< /intent-filter >
< /activity >
< activity android:name=".MainActivity" >< /activity >

lg
Stefan

— geändert am 17.09.2016 00:17:34

Liebe Grüße - Stefan
[ App - Entwicklung ]

  • Forum-Beiträge: 368

17.09.2016 00:28:10 via Website

Hi Stefan,

Aktuell schauts so aus:

activity
        android:name=".SplashActivity"
        android:label="@string/app_name"
        android:theme="@android:style/Theme.Black.NoTitleBar" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

    <activity android:name=".Home" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

public class SplashActivity extends Activity {
    private static boolean splashLoaded = false;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        if (!splashLoaded) {
            setContentView(R.layout.activity_splashscreen);
            int secondsDelayed = 1;
            new Handler().postDelayed(new Runnable() {
                public void run() {
                    startActivity(new Intent(SplashActivity.this, Home.class));
                    finish();
                }
            }, secondsDelayed * 500);

            splashLoaded = true;
        }
        else {
            Intent goToMainActivity = new Intent(SplashActivity.this, Home.class);
            goToMainActivity.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
            startActivity(goToMainActivity);
            finish();
        }
    }
}

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

<ImageView
    android:id="@+id/imgLogo"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerInParent="true"
    android:src="@drawable/splash" />

Ich habe also den Code in der Manifest drin, aber der Splash will einfach nicht starten :(

Liebe Grüße Fabian :)

  • Forum-Beiträge: 2.214

17.09.2016 09:12:06 via Website

Guten Morgen Fabian ,
irgendwie machst du es zu kompliziert :-)

activity
android:name=".SplashActivity"
android:label="@string/app_name"
android:theme="@android:style/Theme.Black.NoTitleBar" >
< intent-filter >
< action android:name="android.intent.action.MAIN" />
< category android:name="android.intent.category.LAUNCHER" />
< /intent-filter>
< /activity>
< activity android:name=".Home" >< /activity >

Also bitte nur die Splash mit MAIN / LAUCHNER angeben

und in der Splash nur lediglich so

@Override
protected void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_splashscreen);
    Thread timerThread = new Thread()
    {
        public void run()
        {
            try
            {
                sleep(3000);
            }
            catch(InterruptedException e)
            {
                e.printStackTrace();
            }
            finally
            {
                Intent intent = new Intent(getBaseContext(),Home.class);
                startActivity(intent);
            }
        }
    };
    timerThread.start();
}
@Override
protected void onPause()
{
    super.onPause();
    finish();
}

lg
Stefan

— geändert am 17.09.2016 10:08:48

Liebe Grüße - Stefan
[ App - Entwicklung ]

  • Forum-Beiträge: 368

17.09.2016 12:23:31 via Website

Vielen Dank! Jetzt klappt's! :)

— geändert am 17.09.2016 12:30:31

Liebe Grüße Fabian :)

  • Forum-Beiträge: 2.214

17.09.2016 12:33:27 via Website

Freut mich - das Wochenende gerettet :-)

Liebe Grüße - Stefan
[ App - Entwicklung ]