Alle Checkboxes anhaken

  • Antworten:28
  • Bentwortet
Fabs44
  • 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 :)

Antworten
swa00
  • Forum-Beiträge: 3.704

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 ]

Fabs44

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

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. :) ;)

Fabs44

Antworten
Fabs44
  • 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 :)

Antworten
swa00
  • Forum-Beiträge: 3.704

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 ]

Antworten
Fabs44
  • 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 :)

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

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. :) ;)

Fabs44

Antworten
Fabs44
  • 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 :)

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

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. :) ;)

Antworten
Fabs44
  • 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 :)

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

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. :) ;)

Fabs44

Antworten
Fabs44
  • 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 :)

Antworten
Fabs44
  • 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 :)

Antworten
swa00
  • Forum-Beiträge: 3.704

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 ]

Fabs44

Antworten
Fabs44
  • 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 :)

Antworten
swa00
  • Forum-Beiträge: 3.704

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 ]

Fabs44

Antworten
Fabs44
  • 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 :)

Antworten
swa00
  • Forum-Beiträge: 3.704

17.09.2016, 12:33:27 via Website

Freut mich - das Wochenende gerettet :-)

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

Antworten
Fabs44
  • Forum-Beiträge: 368

17.09.2016, 14:12:30 via Website

Seit der SplashScreen funktioniert, stürzt die App nach dem anzeigen des SplashScreens ab, aber nur wenn die Activity einen Hintergrund hat, sonst nicht:

android:background="@drawable/bg"

Liebe Grüße Fabian :)

Antworten
swa00
  • Forum-Beiträge: 3.704

17.09.2016, 14:16:13 via Website

Öhm ,was sagt denn dein Errorlog ??

P.S ich würde mal versuchen , statt einem Bitmap eine feste Farbe zu vergeben und dann schauen ,w as das ding macht .
Wenns geht, dann nach dem Fehler in der bg suchen : Ist bg vielleicht exorbitant gross ?? - oder das im splash ??

— geändert am 17.09.2016, 14:27:12

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

Fabs44

Antworten
Fabs44
  • Forum-Beiträge: 368

17.09.2016, 20:19:54 via Website

Also wenn ich als Hintergrund eine Farbe einstelle läuft alles und wenn ich als Hintergrund das Bild einstelle ohne Splash läuft auch alles, aber alles zusammen will nicht funktionieren.
Das Bild hat die Maße 1080x1920px

Liebe Grüße Fabian :)

Antworten
swa00
  • Forum-Beiträge: 3.704

17.09.2016, 20:46:13 via Website

[ANSCHISSMODUS AN]

Dein Errorlog fehlt !

Mit Diesem wäre für mich auch einfacher und ich müsste nicht Rätseln Fabian ....
Bringt nur unnötige Posts und braucht jede Menge Zeit ......

[ANSCHISSMODUS AUS]

:-)
:-)

Erstelle mal bitte händisch den Pfad res/drawable-nodpi und verschiebe die beiden backgrounds da rein.

Das machst du bitte auch mit anderen grossen Images
P.S Grosse Images IMMER vermeiden

— geändert am 17.09.2016, 20:48:58

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

Fabs44

Antworten
Fabs44
  • Forum-Beiträge: 368

17.09.2016, 22:22:31 via Website

Ich habe jetzt alle Bilder auf max. 830 kb runterskaliert.

Konsole:
-entfernt-

Es ist aber so, dass die App nur auf meinem Galaxy S7 abstürzt, aber nicht im Emulator.

— geändert am 17.09.2016, 22:39:44

Liebe Grüße Fabian :)

Antworten
swa00
  • Forum-Beiträge: 3.704

17.09.2016, 22:27:08 via Website

Ist das der Log mit angeschlossenem S7 an USB /ADB ??

Runterscalieren auf Grösse bringt nichts , sie haben trotzdem Full HD resolution .
Hast du das mit dem drawable-nodpi gemacht ???

ERklärung : dein S7 hat an die 4K auflösung - das image wird anhängig vom display heraufscaliert , damit dass ohne dpi berechnung erfolgt, MUSST du den ordner nehmen.

Bitte Raport über die Schritte , die ich oben empfohlen habe , sonst kann ich nicht nachvollziehen, was hier
funktioniert und dir somit NICHT helfen - bitte nichts anders

— geändert am 17.09.2016, 22:30:40

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

Fabs44

Antworten
Fabs44
  • Forum-Beiträge: 368

17.09.2016, 22:56:10 via Website

Hatte das mit dem drawable-nodpi erst nicht gemacht, weil AS einfach nicht das Bild finden musste, aber es ist ja so wie mit dem mipmap file, dass man trotzdem nur @drawable angeben muss.

Jetzt klappts - Vielen tausend Dank!
Ich freue mich echt, dass du mir so hilfst =)

Liebe Grüße Fabian :)

Antworten
swa00
  • Forum-Beiträge: 3.704

17.09.2016, 23:00:42 via Website

Freut mich auch , aber bitte in Zukunft immer bedenken , dass man hier sitzt , helfen möchte aber
orakeln muss, was es sein kann .
Da kann man nicht gebrauchen , dass was anderes gemacht wird :-)

Hab mich wieder beruhigt :-)

Dir viel Erfolg
lg
Stefan

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

Fabs44

Antworten
Fabs44
  • Forum-Beiträge: 368

18.09.2016, 12:42:01 via Website

[[cite Pascal P.]]
Wein weglassen dieser checked boolean und statdessen den fixen wert true reicht schon völlig

Wein? Was soll ich weglassen?

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);
}

Wenn ich die CheckBoxes in einem Scroll View und in keinem ListView habe, funktioniert das trotzdem, wenn ich ListView zu ScrollView ändere?

Oder ist die einfacherere, sicherere Variante jede CheckBox einzeln dem Array hinzuzufügen?

— geändert am 18.09.2016, 12:43:27

Liebe Grüße Fabian :)

Antworten