将textview插入Linearlayout

时间:2018-05-02 06:43:56

标签: android android-studio

我正在创建日历视图。并希望添加多天的事件,如谷歌日历应用程序,所以在这我每天都添加事件。我想在第二个位置添加一个textview到线性布局。在位置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:at   android.view.ViewGroup.addInArray(ViewGroup.java:4542)at   android.view.ViewGroup.addViewInner(ViewGroup.java:4463)at   android.view.ViewGroup.addView(ViewGroup.java:4218)05-02 11:57:17.188   8922-8922 / com.calender.demo.calendar_api W / System.err:at   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)at at   android.support.v7.widget.RecyclerView $ Adapter.bindViewHolder(RecyclerView.java:6714)   在   android.support.v7.widget.RecyclerView $ Recycler.tryBindViewHolderByDeadline(RecyclerView.java:5647)   在   android.support.v7.widget.RecyclerView $ Recycler.tryGetViewHolderForPositionByDeadline(RecyclerView.java:5913)   在   android.support.v7.widget.RecyclerView $ Recycler.getViewForPosition(RecyclerView.java:5752)

3 个答案:

答案 0 :(得分:2)

更改addView行

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

答案 1 :(得分:1)

例如,当您尝试访问IndexOutOfBoundsException中不存在的职位时,通常会导致array

在您的情况下,您尝试访问位置index = 2处的对象,但您的数组只有2个元素position = 0 and position = 1

修改 问题主要是由这条线引起的

AppConstants.eventList.get(i-1).getEvent_count();< - 确保您没有超出eventList范围。

编辑2:

仔细阅读后,您还试图在LinearLayout previousPosition添加一个视图,在这种情况下可能不是有效位置。

答案 2 :(得分:1)

据我所知,你试图在LinearLayout的索引2处添加一个视图,但是LinearLayout在索引0和1处没有任何视图。你需要先在索引0和1处添加一个视图,然后才能可以访问索引2.如果您想将该空格留空,可以尝试添加空视图,但这取决于您以及您要完成的任务。