Ich habe eine ListView mit einer Kopfzeile. Ich weiß, dass Header in meinem ListView position == 0
übernehmen wird.Android ListView-Header nimmt erste Position (Position (0))
In meinem Array habe ich 3 Strings. Wenn der Header die erste Position einnimmt. Es sind 2 übrig für meine Arrays.
Normalerweise würden Sie schreiben:
if (array[position] == array[0]) {
Toast.makeText(UserAreaActivity.this, "You've selected the first Array-String, Toast.LENGTH_SHORT).show();
aber ich habe dies schreiben:
if (array[position] == array[1]) {
Toast.makeText(UserAreaActivity.this, "You've selected the first Array-String, Toast.LENGTH_SHORT).show();
Da jedoch Kopf die erste Position nimmt, habe ich eine Force Close in meiner app bekommen, wenn ich klicken auf dem dritten Eintrag.
Ich wäre dankbar für jede einzelne Antwort auf meine Frage.
Das ist das ganze Klick-Listener
private void addDrawerItems() {
final String[] array = { "Earn Coins", "Get Likes", "Logout"};
mAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, array);
View header = getLayoutInflater().inflate(R.layout.header, null, false);
mDrawerList.addHeaderView(header, "null", false);
mDrawerList.setAdapter(mAdapter);
mDrawerList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
if(array[position]==array[1]){
Toast.makeText(UserAreaActivity.this, "You've selected Earn Coins!", Toast.LENGTH_SHORT).show();
Intent intent = new Intent(UserAreaActivity.this, UserAreaActivity.class);
UserAreaActivity.this.startActivity(intent);
}else if(array[position]==array[2]){
Toast.makeText(UserAreaActivity.this, "You've selected Get Likes!", Toast.LENGTH_SHORT).show();
Intent intent = new Intent(UserAreaActivity.this, GetLikesActivity.class);
UserAreaActivity.this.startActivity(intent);
}else if(array[position]==array[3]){
Toast.makeText(UserAreaActivity.this, "You've selected Logout!", Toast.LENGTH_SHORT).show();
Intent intent = new Intent(UserAreaActivity.this,LoginActivity.class);
UserAreaActivity.this.startActivity(intent);
}else{
Toast.makeText(UserAreaActivity.this,"Whatever..",Toast.LENGTH_SHORT).show();
}
}
});
}
Der Fehler ich erhalte, ist dies:
java.lang.ArrayIndexOutOfBoundsException: length=3; index=3
at de.enesak.likelounge.UserAreaActivity$1.onItemClick(UserAreaActivity.java:59)
at android.widget.AdapterView.performItemClick(AdapterView.java:299)
at android.widget.AbsListView.performItemClick(AbsListView.java:1113)
at android.widget.AbsListView$PerformClick.run(AbsListView.java:2904)
at android.widget.AbsListView$3.run(AbsListView.java:3638)
at android.os.Handler.handleCallback(Handler.java:733)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5017)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
at dalvik.system.NativeStart.main(Native Method)
Hey! Danke für deine Antwort. Durch die Verwendung deines Codes erhalte ich den Fehler nicht mehr, aber jetzt ist es egal, auf welchen Gegenstand ich klicke, jeder Fall wird wahr. – Ketarr
Entschuldigung .. Ich habe vergessen, Pause ... Ich habe die Antwort aktualisiert – W0rmH0le
Perfekt! Mit der Bruchlinie funktioniert es. Ich danke dir sehr. Könnten Sie mir vielleicht sagen, warum Ihre Methode funktioniert und meine nicht? Wäre wirklich hilfreich für mich. – Ketarr