java - 即使标题更改,数组索引长度也太小

标签 java android arrays eclipse indexing

我的列表数组遇到了一些麻烦,它最初是教程中的 4 个项目,然后我尝试使用它并通过输入更多标题和图像来扩展它的大小,但我得到以下
logcat 中出现错误:

java.lang.ArrayIndexOutOfBoundsException = length=4; index=4

代码如下:

package org.iimed.www;

import java.util.ArrayList;
import java.util.List;
import android.app.Activity;
import android.os.Bundle;
import android.view.Gravity;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ListView;
import android.widget.Toast;
import org.iimed.www.R;
import org.iimed.www.CustomListViewAdapter;
import org.iimed.www.RowItem;

public class ImageTextListViewActivity extends Activity implements
        OnItemClickListener {

    public static final String[] titles = new String[] { "Penicillins",
            "Cephalosporins", "Monobactams", "Carbapenems","Macrolides","Tetracyclines",};

    public static final String[] descriptions = new String[] {
            "It is an aggregate accessory fruit",
            "It is the largest herbaceous flowering plant", "Citrus Fruit",
            "Mixed Fruits" };

    public static final Integer[] images = { R.drawable.antibiotic_buton,
            R.drawable.antibiotic_buton, R.drawable.antibiotic_buton, R.drawable.antibiotic_buton, R.drawable.antibiotic_buton,R.drawable.antibiotic_buton, };

    ListView listView;
    List<RowItem> rowItems;


    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.screj);

        rowItems = new ArrayList<RowItem>();
        for (int i = 0; i <= titles.length; i++) {
            RowItem item = new RowItem(images[i], titles[i], descriptions[i]);
            rowItems.add(item);
        }

        listView = (ListView) findViewById(R.id.list);
        CustomListViewAdapter adapter = new CustomListViewAdapter(this,
                R.layout.list_item, rowItems);
        listView.setAdapter(adapter);
        listView.setOnItemClickListener(this);
    }

    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position,
            long id) {
        Toast toast = Toast.makeText(getApplicationContext(),
            "Item " + (position + 1) + ": " + rowItems.get(position),
            Toast.LENGTH_SHORT);
        toast.setGravity(Gravity.BOTTOM|Gravity.CENTER_HORIZONTAL, 0, 0);
        toast.show();
    }
}

看来<=titles.length,增加“titles”不应该增加长度吗?还是布局本身的listview太小?谢谢您的时间。

最佳答案

您只有 4 个描述,图 block 和图像数组的长度为 6。添加更多描述

public static final String[] descriptions = new String[] {
        "It is an aggregate accessory fruit",
        "It is the largest herbaceous flowering plant", "Citrus Fruit",
        "Mixed Fruits" };

关于java - 即使标题更改,数组索引长度也太小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19532704/

相关文章:

java - ConfigurationProperties 和 ConstructorBinding 的复杂类型 DefaultValue

Android 和 Iphone 浏览器中的 Javascript 声音

java - 值堆栈中的 Struts 2 数组列表

java - 添加不可比较的对象时,PriorityQueue 的大小会增加

java - 使用 solrj 和 schema.xml 将实体添加到 solr

java - 找不到符号方法 addOnPageChangeListener

javascript - 如何在数组内部循环并分配给变量

javascript - React Native Maps - 自定义标记图像不在更高的 Android 版本中呈现

android - 如何在 junit 测试中模拟用户点击 ListView 项?

PHP 只解析数组中的第一个元素