首页 > 解决方案 > 将文本视图插入到 Linearlayout 时出现 IndexOutOfBound 异常

问题描述

我正在创建日历视图。并想添加多天的事件,比如谷歌日历应用程序,所以在这个我每天都添加事件。我想在位置 2 的线性布局中添加一个文本视图。在位置 0 和 1 没有添加任何视图,这是我的插入视图的代码。

`

TextView tv = new TextView(context);
tv.setBackgroundResource(R.drawable.event_view);
int height 
=context.getResources().getDimensionPixelSize(R.dimen.event_image_size);
LinearLayout.LayoutParams params = new 
LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,height); 
int previousViewPosition = AppConstants.eventList.get(i-1).getEvent_count();                                        
AppConstants.eventList.get(i).setEvent_count(previousViewPosition);
tv.setPadding(0, 0, 0, 0);
tv.setText(AppConstants.eventList.get(i).getStrName());
params.setMargins(0, 0, 0, 1);
tv.setLayoutParams(params);
tv.setTextSize(8);
tv.setTextColor(context.getResources().getColor(R.color.white));
ll_event_image.addView(tv, previousViewPosition);

`

它给了我错误 IndexOutOfBound。

05-02 11:57:17.162 8922-8922/com.calender.demo.calendar_api W/System.err: java.lang.IndexOutOfBoundsException: index=2 count=1 05-02 11:57:17.187 8922-8922/com .calender.demo.calendar_api W/System.err: 在 android.view.ViewGroup.addInArray(ViewGroup.java:4542) 在 android.view.ViewGroup.addViewInner(ViewGroup.java:4463) 在 android.view.ViewGroup.addView (ViewGroup.java:4218) 05-02 11:57:17.188 8922-8922/com.calender.demo.calendar_api W/System.err: 在 com.desai.vatsal.mydynamiccalendar.DateListAdapter$DateViewHolder.setDates(DateListAdapter.java :278) 在 com.desai.vatsal.mydynamiccalendar.DateListAdapter.onBindViewHolder(DateListAdapter.java:575) 在 android.support.v7.widget.RecyclerView$Adapter.onBindViewHolder(RecyclerView.java:6673) 在 android.support.v7。 widget.RecyclerView$Adapter.bindViewHolder(RecyclerView.java:6714) 在 android.support.v7.widget.RecyclerView$Recycler.tryGetViewHolderForPositionByDeadline(RecyclerView.java:5913) 在 android.support. .v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:5752)

标签: androidandroid-studio

解决方案


更改 addView 行

if(previousViewPosition >= ll_event_image.getChildCount())
   ll_event_image.addView(tv);
else
   ll_event_image.addView(tv, previousViewPosition);

推荐阅读