Android 创建TextView会导致异常

Android 创建TextView会导致异常,android,exception,textview,Android,Exception,Textview,我已经创建了一个适配器来显示此代码的结果 public class Adapter_roadmap extends ArrayAdapter<String> { private final Context context; private final ArrayList<String> station_hour, station_hour_passed, station_name, station_name_passed, station

我已经创建了一个适配器来显示此代码的结果

public class Adapter_roadmap extends ArrayAdapter<String> {
        private final Context context;
        private final  ArrayList<String> station_hour, station_hour_passed, station_name, station_name_passed, station_phoneNum;
        private final ArrayList<Boolean> station_passed;
        public   ArrayList<String> Station_hour_past, Station_hour_future, Station_name_past, Station_name_future, Station_phoneNum_past, Station_phoneNum_future;



        public Adapter_roadmap(Context context, ArrayList<String> station_name_values, ArrayList<String> station_name_passed_values, ArrayList<String> station_hour_values, ArrayList<String> station_hour__passed_values, ArrayList<String> station_phoneNum_values, ArrayList<Boolean> station_passed_values) {
            super(context, R.layout.listitem_road_map, station_name_values);
            this.context = context;
            System.out.println("initial past size: " + station_name_passed_values.size());
            System.out.println("initial past size: " + station_hour__passed_values.size());

            station_name        = station_name_values;
            station_name_passed = station_name_passed_values;
            station_hour        = station_hour_values;
            station_hour_passed = station_hour__passed_values;
            station_phoneNum    = station_phoneNum_values;
            station_passed      = station_passed_values;

        }



        @Override
        public View getView(final int position, View convertView, ViewGroup parent) {
            System.out.println("start of getView");

            LayoutInflater inflater = (LayoutInflater) context
                    .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            View rowView = inflater.inflate(R.layout.listitem_road_map, parent, false);

                    TextView textView_Names_passed = (TextView) rowView.findViewById(R.id.LI_TV_Name_Passed);
                    TextView textView_Hour_passed = (TextView) rowView.findViewById(R.id.LI_TV_Hour_passed);
                    TextView textView_Names = (TextView) rowView.findViewById(R.id.LI_TV_Name);
                    TextView textView_Hour = (TextView) rowView.findViewById(R.id.LI_TV_Hour);
                    textView_Names_passed.setText(station_name_passed.get(position));
                    textView_Hour_passed.setText(station_hour_passed.get(position));
                    textView_Names.setText(station_name.get(position));
                    textView_Hour.setText(station_hour.get(position));
当我尝试调试时,我注意到异常发生在以下两行:

textView_Names_passed.setText(station_name_passed.get(position));
textView_Hour_passed.setText(station_hour_passed.get(position));
当我尝试移除它们时,也没有例外。 我需要这两行,他们是我的应用程序的评论家。 为什么要创建一个额外的索引?
有什么建议吗?

它抛出了一个
索引AutofBoundsException
。这意味着您正试图从不存在的数组中获取数据

异常声明
索引4无效,大小为4
。这说明你在索引4。而且尺寸只有4号。(当然要注意数组从0开始。所以第4个索引试图寻找大小至少为5的内容)

我建议您检查一下:

  • 所有数据都设置在数组
    站名\u passed
    中,并且
    station\u hour\u passed
  • 您没有尝试设置比数据多的字段
  • 您的索引从0开始
  • 您正在使用正确的索引。您正在为所有4个阵列使用position

  • 关于第4点;似乎你有名字和时间,你有条件地把它们传递给名字和时间。我只是在猜测,但是如果你只输入通过的名字和小时数,你最终会得到更少的名字和小时数。这意味着该数组的大小更小。循环遍历所有名称和小时最终将导致传递的数组超出边界,因为它们的条目较少,因为原始名称和小时集已被选中。为什么其他textView不抛出任何异常?为什么只有这两个已检查阵列出现此问题?犯了一个小错误。我是说车站的名字过去了,车站的时间过去了。我没有足够的信息知道你从哪里得到数据。但如果你用的是女爵士的位置。因此,如果车站名称和车站时间的大小更大。所以他们不会越界。我也对我的答案做了一些修改。检查一下,看看它是否有帮助谢谢你的尝试,但没有任何效果。我仍然不知道是什么导致了越界异常。我所做的是在有问题的行之前添加这一行:“如果(位置
    textView_Names_passed.setText(station_name_passed.get(position));
    textView_Hour_passed.setText(station_hour_passed.get(position));