У меня есть ListView с заголовком. Я знаю, что заголовок возьмет position == 0
в моем ListView.Android ListView-Header занимает первое место (позиция (0))
В моем массиве у меня есть 3 строки. Если заголовок занимает первое положение. Осталось 2 для моих массивов.
Обычно можно было бы написать:
if (array[position] == array[0]) {
Toast.makeText(UserAreaActivity.this, "You've selected the first Array-String, Toast.LENGTH_SHORT).show();
, но я должен написать это:
if (array[position] == array[1]) {
Toast.makeText(UserAreaActivity.this, "You've selected the first Array-String, Toast.LENGTH_SHORT).show();
Однако, поскольку заголовок занимает первую позицию, я получаю Force Close в мое приложение, когда я нажимаю на третьей записи.
Буду благодарен за каждый ответ на мой вопрос.
Это весь Нажмите Слушатель
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();
}
}
});
}
Ошибка я получаю это:
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)
Эй! Спасибо за Ваш ответ. Используя свой код, я больше не получаю ошибку, но теперь не имеет значения, какой элемент я нажимаю, каждый случай становится правдой. – Ketarr
Извините .. Я забыл вставить перерыв ... Я обновил ответ – W0rmH0le
Отлично! С линией прерывания он работает. Огромное спасибо. Не могли бы вы сказать мне, почему ваш метод работает, а мой не так ли? Было бы очень полезно для меня. – Ketarr