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