如何清除Java中的String数组中的所有元素? [英] How to clear all the elements in the String array in java?

查看:519
本文介绍了如何清除Java中的String数组中的所有元素?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我收到 java.util.ConcurrentModificationException ,因为我试图动态加载的元素,所以我想以清除它的所有元素。请指导我该如何清除上的元素或者我怎么能在一个片段任何其他方式做。谢谢..

 字符串Scroll_series [] =新的String [] {};光标C = db.rawQuery(SELECT DISTINCT大赛CBCTABLE其中year = 2012年和MAKE ='奥迪'AND MODEL ='A6',NULL);        如果(C!= NULL){
            如果(c.moveToFirst()){
                做{
                    串系列= c.getString(c.getColumnIndex(系列));
                    series_value.add(系列);
                }而(c.moveToNext());
            }
        }        Scroll_series = series_value.toArray(新的String [series_value.size()]);

这是我的完整code。

 公共类滚轮扩展活动
{
私有静态最后弦乐TAG =TAG;
    // TODO:外部化字符串数组
    串value_year =;
    串value_make =;
    串value_model =;
    串value_series =;
    串value_style =;
    字符串Scroll_year [] =新的String [] {2012,2011,2010,2009,2008,2007,2006,2005,2004};
    字符串Scroll_make [] =新的String [] {};    保护SQLiteDatabase分贝;
    清单<串GT; year_value =新的ArrayList<串GT;();    清单<串GT; model_value =新的ArrayList<串GT;();
    清单<串GT; series_value =新的ArrayList<串GT;();
    清单<串GT; style_value =新的ArrayList<串GT;();    //滚动滚动标志
    私人布尔ScrollScrolled = FALSE;    私人TextView的文本;
    私人的EditText文本1;
    私人的EditText文本2;    @覆盖
    公共无效的onCreate(捆绑savedInstanceState)
        {
            super.onCreate(savedInstanceState);
            的setContentView(R.layout.scroller);
             SQLiteAdapter帮手=新SQLiteAdapter(本);
             DB = helper.getWritableDatabase();            // drillyear();
            // drillmake();
            文本1 =(EditText上)this.findViewById(R.id.r1);
            文本2 =(EditText上)this.findViewById(R.id.r2);            initScroll1(R.id.p1);
            initScroll2(R.id.p2);            更新状态();
        }    //滚动滚动监听器
    OnScrollScrollListener scrolledListener =新OnScrollScrollListener()
        {
            公共无效onScrollStarts(滚动型滚动)
                {
                    ScrollScrolled = TRUE;
                }            公共无效onScrollEnds(滚动型滚动)
                {
                    ScrollScrolled = FALSE;                    更新状态();
                }
        };    //滚动改变监听器
    公共OnScrollChangedListener changedListener =新OnScrollChangedListener()
        {
            公共无效调用onChanged(滚动型涡旋,诠释的属性oldValue,INT newValue)以
                {
                    如果(!ScrollScrolled)
                        {                            更新状态();
                        }
                }
        };
    私人无效updateStatus()
        {
        text1.setText(Scroll_year [getWheel(R.id.p1).getCurrentItem()]);
        text2.setText(Scroll_make [getWheel(R.id.p2).getCurrentItem()]);        value_year = Scroll_year [getWheel(R.id.p1).getCurrentItem()];
        value_make = Scroll_make [getWheel(R.id.p2).getCurrentItem()];        initScroll1(R.id.p1);
        }    私人滚动型getWheel(INT ID)
    {
        返回(滚动型)findViewById(ID);
    }    私人诠释getWheelValue(INT ID)
    {
        返回getWheel(ID).getCurrentItem();
    }    私人无效initScroll1(INT ID)
        {
            滚动型滚动=(滚动型)findViewById(ID);
            Scroll.setAdapter(新ArrayScrollAdapter<串GT;(Scroll_year));
            Scroll.setVisibleItems(4);
            Scroll.setCurrentItem(0);
            Scroll.addChangingListener(changedListener);
            Scroll.addScrollingListener(scrolledListener);
            drillmake();
        }    私人无效initScroll2(INT ID)
        {
            滚动型滚动=(滚动型)findViewById(ID);
            Scroll.setAdapter(新ArrayScrollAdapter<串GT;(Scroll_make));
            Scroll.setVisibleItems(4);
            Scroll.setCurrentItem(0);
            Scroll.addChangingListener(changedListener);
            Scroll.addScrollingListener(scrolledListener);
        }        私人滚动型getScroll(INT ID)
        {
            返回(滚动型)findViewById(ID);
        }
    私人诠释getScrollValue(INT ID)
        {
            返回getScroll(ID).getCurrentItem();
        }    公共无效drillyear()
    {
        光标C = db.rawQuery(SELECT DISTINCT一年CBCTABLE,NULL);        如果(C!= NULL){
            如果(c.moveToFirst()){
                做{
                    字符串YEAR = c.getString(c.getColumnIndex(年));
                    Log.v(TAG,年);
                    // INT年龄= c.getInt(c.getColumnIndex(时代));
                    year_value.add(年);
                }而(c.moveToNext());
            }
        }    Scroll_year = year_value.toArray(新的String [year_value.size()]);
    }    公共无效drillmake()
    {
        value_year = Scroll_year [getWheel(R.id.p1).getCurrentItem()];
        光标C = db.rawQuery(SELECT DISTINCT建立从CBCTABLE其中year =+ value_year,NULL);
        清单<串GT; make_value =新的ArrayList<串GT;();
        如果(C!= NULL){
            如果(c.moveToFirst()){
                做{
                    字符串MAKE = c.getString(c.getColumnIndex(使));
                    Log.v(TAG,MAKE);
                    make_value.add(MAKE);
                }而(c.moveToNext());
            }
        }    Scroll_make = make_value.toArray(新的String [make_value.size()]);
    }
}

我的code的另一部分

 公共类滚动型扩展视图
{
    / **当前值和放大器;标签文本颜色* /
    私有静态最终诠释VALUE_TEXT_COLOR = 0xE0000000;    / **项目文本颜色* /
    私有静态最终诠释ITEMS_TEXT_COLOR = 0xFF000000;    / **顶部和底部阴影色* /
    私有静态最终诠释[] = SHADOWS_COLORS新INT [] {0xFF111111,0x00AAAAAA,0x00AAAAAA};    / **附加项目高度(被添加到标准文本项目高度)* /
    私有静态最终诠释ADDITIONAL_ITEM_HEIGHT = 20;    /** 字体大小 */
    私有静态最终诠释TEXT_SIZE = 19;    / **顶部和底部的项目等距(隐藏)* /
    私有静态最终诠释ITEM_OFFSET = TEXT_SIZE / 2;    / **的项目布局附加宽* /
    私有静态最终诠释ADDITIONAL_ITEMS_SPACE = 35;    / **标签偏移* /
    私有静态最终诠释LABEL_OFFSET = 13;    / **左右填充值* /
    私有静态最终诠释PADDING = 15;    / **可见项的默认数* /
    私有静态最终诠释DEF_VISIBLE_ITEMS = 15;    //滚动值
    私人ScrollAdapter适配器= NULL;
    私人INT CURRENTITEM = 0;    //宽度
    私人INT itemsWidth = 0;
    私人INT labelWidth = 0;    //可见项的计数
    私人INT visibleItems = DEF_VISIBLE_ITEMS;    //文本油漆
    私人TextPaint itemsPaint;
    私人TextPaint valuePaint;    //布局
    私人StaticLayout itemsLayout;
    私人StaticLayout labelLayout;
    私人StaticLayout valueLayout;    //标签和放大器;背景
    私人字符串标签;
    私人可绘制centerDrawable;    //可绘制阴影
    私人GradientDrawable topShadow;
    私人GradientDrawable bottomShadow;    //最后触摸Y位置
    私人浮动lastYTouch;    //滚动
    私人布尔isScrollingPerformed;    //监听器
    私人最终名单< OnScrollChangedListener> changingListeners =新的LinkedList< OnScrollChangedListener>();
    私人最终名单< OnScrollScrollListener> scrollingListeners =新的LinkedList< OnScrollScrollListener>();    / **
     *构造
     * /
    公共滚动型(上下文的背景下,ATTRS的AttributeSet,INT defStyle)
        {
            超(背景下,ATTRS,defStyle);
        }    / **
     *构造
     * /
    公共滚动型(上下文的背景下,ATTRS的AttributeSet)
        {
            超(背景下,ATTRS);
        }    / **
     *构造
     * /
    公共滚动型(上下文的背景下)
        {
            超级(上下文);
        }    / **
     *获取滚动适配器
     *
     返回:适配器
     * /
    公共ScrollAdapter getAdapter()
        {
            返回适配器;
        }    / **
     *集线轮适配器
     *
     * @参数适配器
     *新的滚动适配器
     * /
    公共无效setAdapter(ScrollAdapter适配器)
        {
            this.adapter =适配器;
            无效();
        }    / **
     *获取可见项的计数
     *
     返回:可见的项目数
     * /
    公众诠释getVisibleItems()
        {
            返回visibleItems;
        }    / **
     *设置显示的项数
     *
     * @参数计数
     *新的计数
     * /
    公共无效setVisibleItems(诠释计数)
        {
            visibleItems =计数;
            无效();
        }    / **
     *获取标签
     *
     返回:标签
     * /
    公共字符串getLabel()
        {
            返回标签;
        }    / **
     *设置标签
     *
     * @参数newLabel
     *标签设置
     * /
    公共无效setLabel(字符串newLabel)
        {
            如果(标签== NULL ||!label.equals(newLabel))
                {
                    标签= newLabel;
                    labelLayout = NULL;
                    无效();
                }
        }    / **
     *添加滚动变化的监听
     *
     * @参数监听器
     *监听器
     * /
    公共无效addChangingListener(OnScrollChangedListener监听器)
        {
            changingListeners.add(监听);
        }    / **
     *删除滚动变化的监听
     *
     * @参数监听器
     *监听器
     * /
    公共无效removeChangingListener(OnScrollChangedListener监听器)
        {
            changingListeners.remove(监听);
        }    / **
     *通知改变听众
     *
     * @参数属性oldValue
     *旧的滚动值
     * @参数为newValue
     *新的滚动值
     * /
    保护无效notifyChangingListeners(INT属性oldValue,INT newValue)以
        {
            对于(OnScrollChangedListener监听器:changingListeners)
                {
                    listener.onChanged(这一点,属性oldValue,newValue)以;
                }
        }    / **
     *添加滚动滚动监听器
     *
     * @参数监听器
     *监听器
     * /
    公共无效addScrollingListener(OnScrollScrollListener监听器)
        {
            scrollingListeners.add(监听);
        }    / **
     *删除滚动滚动监听器
     *
     * @参数监听器
     *监听器
     * /
    公共无效removeScrollingListener(OnScrollScrollListener监听器)
        {
            scrollingListeners.remove(监听);
        }    / **
     *通知有关启动滚动监听器
     * /
    保护无效notifyScrollingListenersAboutStart()
        {
            对于(OnScrollScrollListener监听器:scrollingListeners)
                {
                    listener.onScrollStarts(本);
                }
        }    / **
     *通知有关结束滚动监听器
     * /
    保护无效notifyScrollingListenersAboutEnd()
        {
            对于(OnScrollScrollListener监听器:scrollingListeners)
                {
                    listener.onScrollEnds(本);
                }
        }    / **
     *获取当前值
     *
     返回:当前值
     * /
    公众诠释getCurrentItem()
        {
            返回CURRENTITEM;
        }    / **
     *设置当前项目
     *
     * @参数指标
     *项目索引
     * /
    公共无效setCurrentItem(INT指数)
        {
            如果(指数!= CURRENTITEM)
                {
                    itemsLayout = NULL;
                    valueLayout = NULL;                    INT老= CURRENTITEM;
                    CURRENTITEM =指数;                    notifyChangingListeners(旧,CURRENTITEM);                    无效();
                }
        }    / **
     *初始化资源
     * /
    私人无效initResourcesIfNecessary()
        {
            如果(itemsPaint == NULL)
                {
                    itemsPaint =新TextPaint(Paint.ANTI_ALIAS_FLAG | Paint.FAKE_BOLD_TEXT_FLAG);
                    // itemsPaint.density = getResources()getDisplayMetrics()密度。
                    itemsPaint.setTextSize(TEXT_SIZE);
                }            如果(valuePaint == NULL)
                {
                    valuePaint =新TextPaint(Paint.ANTI_ALIAS_FLAG | Paint.FAKE_BOLD_TEXT_FLAG | Paint.DITHER_FLAG);
                    // valuePaint.density = getResources()getDisplayMetrics()密度。
                    valuePaint.setTextSize(TEXT_SIZE);
                    valuePaint.setShadowLayer(0.5F,0,0.5F,为0xFFFFFFFF);
                }            如果(centerDrawable == NULL)
                {
                    centerDrawable =的getContext()getResources()getDrawable(R.drawable.wheel_val)。
                }            如果(topShadow == NULL)
                {
                    topShadow =新GradientDrawable(Orientation.TOP_BOTTOM,SHADOWS_COLORS);
                }            如果(bottomShadow == NULL)
                {
                    bottomShadow =新GradientDrawable(Orientation.BOTTOM_TOP,SHADOWS_COLORS);
                }            setBackgroundResource(R.drawable.wheel_bg);
        }    / **
     *计算布局所需的高度
     *
     * @参数布局
     *源布局
     返回:所需的布局高度
     * /
    私人诠释getDesiredHeight(布局布局)
        {
            如果(布局== NULL){返回0; }            INT linecount = layout.getLineCount();
            INT期望= layout.getLineTop(linecount) - ITEM_OFFSET * 2 - ADDITIONAL_ITEM_HEIGHT;            //检查对我们最小高度
            期望= Math.max(需要的话,getSuggestedMinimumHeight());            返回所需的;
        }    / **
     *根据当前值文本构建
     *
     返回:文本
     * /
    私人字符串buildText()
        {
            ScrollAdapter适配器= getAdapter();
            StringBuilder的itemsText =新的StringBuilder();
            INT为addItems = visibleItems / 2;
            对于(INT I = CURRENTITEM - 为addItems; I< CURRENTITEM;我++)
                {
                    如果(I> = 0&放大器;&安培;!适配器= NULL)
                        {
                            字符串文本= adapter.getItem(I)
                            如果(文字!= NULL)
                                {
                                    itemsText.append(文本);
                                }
                        }
                    itemsText.append(\\ n);
                }            itemsText.append(\\ n); //此处将电流值            的for(int i = CURRENTITEM + 1; I< = CURRENTITEM +为addItems;我++)
                {
                    如果(适配器= NULL&放大器;!&安培; I< adapter.getItemsCount())
                        {
                            字符串文本= adapter.getItem(I)
                            如果(文字!= NULL)
                                {
                                    itemsText.append(文本);
                                }
                        }
                    如果(I< CURRENTITEM +为addItems)
                        {
                            itemsText.append(\\ n);
                        }
                }
            返回itemsText.toString();
        }    / **
     *返回的最大项目长度可以是present
     *
     返回:最大长度
     * /
    私人诠释getMaxTextLength()
        {
            ScrollAdapter适配器= getAdapter();
            如果(适配器== NULL){返回0; }            INT adapterLength = adapter.getMaximumLength();
            如果(adapterLength大于0){返回adapterLength; }            字符串maxText = NULL;
            INT为addItems = visibleItems / 2;
            的for(int i = Math.max(CURRENTITEM - 为addItems,0); I< Math.min(CURRENTITEM + visibleItems,adapter.getItemsCount());我++)
                {
                    字符串文本= adapter.getItem(I)
                    如果(文= NULL&放大器;!及(maxText == NULL || maxText.length()< text.length()))
                        {
                            maxText =文本;
                        }
                }            返回maxText!= NULL? maxText.length():0;
        }    / **
     *计算控制宽度,并创建文本布局
     *
     * @参数widthSize
     *输入宽度布局
     * @参数模式
     *布局模式
     * @返回所计算的控制宽度
     * /
    私人诠释calculateLayoutWidth(INT widthSize,INT模式)
        {
            initResourcesIfNecessary();            INT宽度= widthSize;            INT最大长度= getMaxTextLength();
            如果(最大长度大于0)
                {
                    浮输出textWidth = FloatMath.ceil(Layout.getDesiredWidth(0,itemsPaint));
                    itemsWidth =(INT)(最大长度*输出textWidth);
                }
            其他
                {
                    itemsWidth = 0;
                }
            itemsWidth + = ADDITIONAL_ITEMS_SPACE; //使一些            labelWidth = 0;
            如果(标签= NULL&放大器;!&安培; label.length()0)
                {
                    labelWidth =(INT)FloatMath.ceil(Layout.getDesiredWidth(标签,valuePaint));
                }            布尔重新计算= FALSE;
            如果(==模式MeasureSpec.EXACTLY)
                {
                    宽度= widthSize;
                    重新计算= TRUE;
                }
            其他
                {
                    宽度= itemsWidth + labelWidth + 2 * PADDING;
                    如果(labelWidth大于0)
                        {
                            宽+ = LABEL_OFFSET;
                        }                    //检查对我们最小宽度
                    宽度= Math.max(宽度,getSuggestedMinimumWidth());                    如果(==模式和MeasureSpec.AT_MOST功放;&安培; widthSize<宽度)
                        {
                            宽度= widthSize;
                            重新计算= TRUE;
                        }
                }            如果(重新计算)
                {
                    //重新计算宽度
                    INT pureWidth =宽度 - LABEL_OFFSET - 2 * PADDING;
                    如果(pureWidth&下; = 0)
                        {
                            itemsWidth = labelWidth = 0;
                        }
                    如果(labelWidth大于0)
                        {
                            双newWidthItems =(双)itemsWidth * pureWidth /(itemsWidth + labelWidth);
                            itemsWidth =(INT)newWidthItems;
                            labelWidth = pureWidth - itemsWidth;
                        }
                    其他
                        {
                            itemsWidth = pureWidth + LABEL_OFFSET; //没有标签
                        }
                }            如果(itemsWidth大于0)
                {
                    createLayouts(itemsWidth,labelWidth);
                }            返回宽度;
        }    / **
     *创建布局
     *
     * @参数widthItems
     *项布局宽度
     * @参数widthLabel
     *标签布局的宽度
     * /
    私人无效createLayouts(INT widthItems,诠释widthLabel)
        {
            如果(itemsLayout == NULL || itemsLayout.getWidth()> widthItems)
                {
                    itemsLayout =新StaticLayout(buildText(),itemsPaint,widthItems,widthLabel大于0 Layout.Alignment.ALIGN_OPPOSITE:Layout.Alignment.ALIGN_CENTER,1,ADDITIONAL_ITEM_HEIGHT,假);
                }
            其他
                {
                    itemsLayout.increaseWidthTo(widthItems);
                }            如果(valueLayout == NULL || valueLayout.getWidth()> widthItems)
                {
                    字符串文本= getAdapter()!= NULL? 。getAdapter()的getItem(CURRENTITEM):空;
                    valueLayout =新StaticLayout(文字=空文:,valuePaint,widthItems,widthLabel大于0 Layout.Alignment.ALIGN_OPPOSITE:?Layout.Alignment.ALIGN_CENTER,1,ADDITIONAL_ITEM_HEIGHT,FALSE);
                }
            其他
                {
                    valueLayout.increaseWidthTo(widthItems);
                }            如果(widthLabel大于0)
                {
                    如果(labelLayout == NULL || labelLayout.getWidth()> widthLabel)
                        {
                            labelLayout =新StaticLayout(标签,valuePaint,widthLabel,Layout.Alignment.ALIGN_NORMAL,1,ADDITIONAL_ITEM_HEIGHT,FALSE);
                        }
                    其他
                        {
                            labelLayout.increaseWidthTo(widthLabel);
                        }
                }
        }    @覆盖
    保护无效onMeasure(INT widthMeasureSpec,诠释heightMeasureSpec)
        {
            INT widthMode = MeasureSpec.getMode(widthMeasureSpec);
            INT heightMode = MeasureSpec.getMode(heightMeasureSpec);
            INT widthSize = MeasureSpec.getSize(widthMeasureSpec);
            INT heightSize = MeasureSpec.getSize(heightMeasureSpec);            INT宽度= calculateLayoutWidth(widthSize,widthMode);            INT高度;
            如果(heightMode == MeasureSpec.EXACTLY)
                {
                    高度= heightSize;
                }
            其他
                {
                    身高= getDesiredHeight(itemsLayout);                    如果(heightMode == MeasureSpec.AT_MOST)
                        {
                            高度= Math.min(高度,heightSize);
                        }
                }            setMeasuredDimension(宽度,高度);
        }    @覆盖
    保护无效的onDraw(帆布油画)
        {
            super.onDraw(画布);            如果(itemsLayout == NULL)
                {
                    如果(itemsWidth == 0)
                        {
                            calculateLayoutWidth(的getWidth(),MeasureSpec.EXACTLY);
                        }
                    其他
                        {
                            createLayouts(itemsWidth,labelWidth);
                        }
                }            drawCenterRect(画布);            如果(itemsWidth大于0)
                {
                    canvas.save();
                    //跳过填充空间和隐藏的顶部和底部件的一部分
                    canvas.translate(PADDING,-ITEM_OFFSET);
                    drawItems(画布);
                    drawValue(画布);
                    canvas.restore();
                }            drawShadows(画布);
        }    / **
     *绘制在上面和控制下的阴影
     *
     * @参数帆布
     *在画布上绘制
     * /
    私人无效drawShadows(帆布油画)
        {
            topShadow.setBounds(0,0,的getWidth(),的getHeight()/ visibleItems);
            topShadow.draw(画布);            bottomShadow.setBounds(0,的getHeight() - 的getHeight()/ visibleItems,的getWidth(),的getHeight());
            bottomShadow.draw(画布);
        }    / **
     *绘制值和标签布局
     *
     * @参数帆布
     *在画布上绘制
     * /
    私人无效drawValue(帆布油画)
        {
            valuePaint.setColor(VALUE_TEXT_COLOR);
            valuePaint.drawableState = getDrawableState();            矩形边界=新的矩形();
            itemsLayout.getLineBounds(visibleItems / 2,边界);            //绘制标签
            如果(labelLayout!= NULL)
                {
                    canvas.save();
                    canvas.translate(itemsLayout.getWidth()+ LABEL_OFFSET,bounds.top);
                    labelLayout.draw(画布);
                    canvas.restore();
                }            //汲取电流值
            canvas.save();
            canvas.translate(0,bounds.top);
            valueLayout.draw(画布);
            canvas.restore();
        }    / **
     *绘制项目
     *
     * @参数帆布
     *在画布上绘制
     * /
    私人无效drawItems(帆布油画)
        {
            itemsPaint.setColor(ITEMS_TEXT_COLOR);
            itemsPaint.drawableState = getDrawableState();
            itemsLayout.draw(画布);
        }    / **
     *绘制矩形的电流值
     *
     * @参数帆布
     *在画布上绘制
     * /
    私人无效drawCenterRect(帆布油画)
        {
            INT中心=的getHeight()/ 2;
            的int偏移=的getHeight()/ visibleItems / 2;
            centerDrawable.setBounds(0,中心 - 偏移的getWidth(),中心+偏移量);
            centerDrawable.draw(画布);
        }    @覆盖
    公共布尔onTouchEvent(MotionEvent事件)
        {
            ScrollAdapter适配器= getAdapter();
            如果(适配器== NULL){返回true; }            开关(event.getAction())
                {
                    案例MotionEvent.ACTION_DOWN:
                        lastYTouch = event.getY();
                        打破;                    案例MotionEvent.ACTION_MOVE:
                        如果(!isScrollingPerformed)
                            {
                                isScrollingPerformed = TRUE;
                                notifyScrollingListenersAboutStart();
                            }
                        浮,δ= event.getY() - lastYTouch;
                        诠释计数=(INT)(visibleItems *三角洲/的getHeight());
                        INT POS = CURRENTITEM - 计数;
                        POS = Math.max(POS,0);
                        POS = Math.min(POS,adapter.getItemsCount() - 1);
                        如果(POS!= CURRENTITEM)
                            {
                                lastYTouch = event.getY();
                                setCurrentItem(POS)
                            }
                        打破;                    案例MotionEvent.ACTION_UP:
                        如果(isScrollingPerformed)
                            {
                                notifyScrollingListenersAboutEnd();
                                isScrollingPerformed = FALSE;
                            }
                        打破;
                }
            返回true;
        }
}

这是我的执行日志


    10月12日至21日:43:26.174:E / AndroidRuntime(591):致命异常:主要结果
    10月12日至21日:43:26.174:E / AndroidRuntime(591):java.util.ConcurrentModificationException

  10月12日至21日:43:26.174:E / AndroidRuntime(591):在java.util.LinkedList中的$ LinkIterator.next(LinkedList.java:124)10月12日至21日:43:26.174:E / AndroidRuntime(591):在com.kk.scroll.ScrollView.notifyChangingListeners(ScrollView.java:220)10月12日至21日:43:26.174:E / AndroidRuntime(591):在com.kk.scroll.ScrollView.setCurrentItem(ScrollView.java:296)10月12日至21日:43:26.174:E / AndroidRuntime(591):在com.kk.SellMyCar.Scroller.initScroll1(Scroller.java:135)10月12日至21日:43:26.174:E / AndroidRuntime(591):在com.kk.SellMyCar.Scroller.updateStatus(Scroller.java:117)10月12日至21日:43:26.174:E / AndroidRuntime(591):在com.kk.SellMyCar.Scroller.access $ 1(Scroller.java:109)10月12日至21日:43:26.174:E / AndroidRuntime(591):在com.kk.SellMyCar.Scroller $ 1.onScrollEnds(Scroller.java:91)10月12日至21日:43:26.174:E / AndroidRuntime(591):在com.kk.scroll.ScrollView.notifyScrollingListenersAboutEnd(ScrollView.java:266)10月12日至21日:43:26.174:E / AndroidRuntime(591):在com.kk.scroll.ScrollView.onTouchEvent(ScrollView.java:722)10月12日至21日:43:26.174:E / AndroidRuntime(591):在android.view.View.dispatchTouchEvent(View.java:3766)10月12日至21日:43:26.174:E / AndroidRuntime(591):在android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:936)10月12日至21日:43:26.174:E / AndroidRuntime(591):在android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:936)10月12日至21日:43:26.174:E / AndroidRuntime(591):在android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:936)10月12日至21日:43:26.174:E / AndroidRuntime(591):在android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:936)10月12日至21日:43:26.174:E / AndroidRuntime(591):在android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:936)10月12日至21日:43:26.174:E / AndroidRuntime(591):在com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:1671)10月12日至21日:43:26.174:E / AndroidRuntime(591):在com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1107)10月12日至21日:43:26.174:E / AndroidRuntime(591):在android.app.Activity.dispatchTouchEvent(Activity.java:2086)10月12日至21日:43:26.174:E / AndroidRuntime(591):在com.android.internal.policy.impl.PhoneWindow $ DecorView.dispatchTouchEvent(PhoneWindow.java:1655)10月12日至21日:43:26.174:E / AndroidRuntime(591):在android.view.ViewRoot.handleMessage(ViewRoot.java:1785)10月12日至21日:43:26.174:E / AndroidRuntime(591):在android.os.Handler.dispatchMessage(Handler.java:99)10月12日至21日:43:26.174:E / AndroidRuntime(591):在android.os.Looper.loop(Looper.java:123)10月12日至21日:43:26.174:E / AndroidRuntime(591):在android.app.ActivityThread.main(ActivityThread.java:4627)10月12日至21日:43:26.174:E / AndroidRuntime(591):在java.lang.reflect.Method.invokeNative(本机方法)10月12日至21日:43:26.174:E / AndroidRuntime(591):在java.lang.reflect.Method.invoke(Method.java:521)10月12日至21日:43:26.174:E / AndroidRuntime(591):在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:868)10月12日至21日:43:26.174:E / AndroidRuntime(591):在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)10月12日至21日:43:26.174:E / AndroidRuntime(591):在dalvik.system.NativeStart.main(本机方法)


解决方案

要严格回答你的问题:

  java.lang.Arrays.fill()

提供了几种方法,让您清除数组的内容。

这将最propably的不可以您解决实际问题。 ConcurrentModificationException的无关与结算的数组。

I am getting java.util.ConcurrentModificationException since I am trying to load the elements dynamically, so I would like to clear all the elements in it. Kindly guide me on this how to clear on the elements or how can I do in any other way with a snippet. Thanks..

String Scroll_series[] = new String[]{"     "};      

Cursor c = db.rawQuery("SELECT DISTINCT SERIES FROM CBCTABLE where YEAR=2012 AND MAKE='Audi' AND MODEL='A6'" , null);

        if (c != null ) {
            if  (c.moveToFirst()) {
                do {
                    String SERIES = c.getString(c.getColumnIndex("series"));
                    series_value.add(SERIES);
                }while (c.moveToNext());
            } 
        }

        Scroll_series = series_value.toArray(new String[series_value.size()]);

This is my complete code.

public class Scroller extends Activity
{
private static final String TAG = "TAG";
    // TODO: Externalize string-array
    String value_year="";
    String value_make="";
    String value_model="";
    String value_series="";
    String value_style="";
    String Scroll_year[] = new String[]{"2012", "2011", "2010", "2009", "2008", "2007","2006","2005","2004"};
    String Scroll_make[] = new String[]{"       "};

    protected SQLiteDatabase db;
    List<String> year_value = new ArrayList<String>();

    List<String> model_value = new ArrayList<String>();
    List<String> series_value = new ArrayList<String>();
    List<String> style_value = new ArrayList<String>();

    // Scroll scrolled flag
    private boolean ScrollScrolled = false;

    private TextView text;
    private EditText text1;
    private EditText text2;

    @Override
    public void onCreate(Bundle savedInstanceState)
        {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.scroller);
             SQLiteAdapter helper = new SQLiteAdapter(this); 
             db = helper.getWritableDatabase(); 

            // drillyear();
            // drillmake();


            text1 = (EditText) this.findViewById(R.id.r1);
            text2 = (EditText) this.findViewById(R.id.r2);



            initScroll1(R.id.p1);
            initScroll2(R.id.p2);

            updateStatus();


        }

    // Scroll scrolled listener
    OnScrollScrollListener scrolledListener = new OnScrollScrollListener()
        {
            public void onScrollStarts(ScrollView Scroll)
                {
                    ScrollScrolled = true;
                }

            public void onScrollEnds(ScrollView Scroll)
                {
                    ScrollScrolled = false;

                    updateStatus();
                }
        };

    // Scroll changed listener
    public OnScrollChangedListener changedListener = new OnScrollChangedListener()
        {
            public void onChanged(ScrollView Scroll, int oldValue, int newValue)
                {
                    if (!ScrollScrolled)
                        {

                            updateStatus();
                        }
                }
        };


    private void updateStatus()
        {
        text1.setText(Scroll_year[getWheel(R.id.p1).getCurrentItem()]);
        text2.setText(Scroll_make[getWheel(R.id.p2).getCurrentItem()]);

        value_year = Scroll_year[getWheel(R.id.p1).getCurrentItem()];
        value_make = Scroll_make[getWheel(R.id.p2).getCurrentItem()];

        initScroll1(R.id.p1);
        }

    private ScrollView getWheel(int id)
    {
        return (ScrollView) findViewById(id);
    }

    private int getWheelValue(int id)
    {
        return getWheel(id).getCurrentItem();
    }

    private void initScroll1(int id)
        {
            ScrollView Scroll = (ScrollView) findViewById(id);
            Scroll.setAdapter(new ArrayScrollAdapter<String>(Scroll_year));
            Scroll.setVisibleItems(4);
            Scroll.setCurrentItem(0);
            Scroll.addChangingListener(changedListener);
            Scroll.addScrollingListener(scrolledListener);
            drillmake();
        }

    private void initScroll2(int id)
        {
            ScrollView Scroll = (ScrollView) findViewById(id);
            Scroll.setAdapter(new ArrayScrollAdapter<String>(Scroll_make));
            Scroll.setVisibleItems(4);
            Scroll.setCurrentItem(0);
            Scroll.addChangingListener(changedListener);
            Scroll.addScrollingListener(scrolledListener);
        }

        private ScrollView getScroll(int id)
        {
            return (ScrollView) findViewById(id);
        }


    private int getScrollValue(int id)
        {
            return getScroll(id).getCurrentItem();
        }

    public void drillyear()
    {
        Cursor c = db.rawQuery("SELECT DISTINCT YEAR FROM CBCTABLE " , null);

        if (c != null ) {
            if  (c.moveToFirst()) {
                do {
                    String YEAR = c.getString(c.getColumnIndex("year"));
                    Log.v(TAG,YEAR);
                    //int age = c.getInt(c.getColumnIndex("Age"));
                    year_value.add(YEAR);
                }while (c.moveToNext());
            } 
        }

    Scroll_year = year_value.toArray(new String[year_value.size()]);
    }

    public void drillmake()
    {
        value_year = Scroll_year[getWheel(R.id.p1).getCurrentItem()];
        Cursor c = db.rawQuery("SELECT DISTINCT MAKE FROM CBCTABLE where YEAR="+value_year , null);
        List<String> make_value = new ArrayList<String>();
        if (c != null ) {
            if  (c.moveToFirst()) {
                do {
                    String MAKE = c.getString(c.getColumnIndex("make"));
                    Log.v(TAG,MAKE);
                    make_value.add(MAKE);
                }while (c.moveToNext());
            } 
        }

    Scroll_make = make_value.toArray(new String[make_value.size()]);
    }


}

The other part of my code

public class ScrollView extends View
{
    /** Current value & label text color */
    private static final int VALUE_TEXT_COLOR = 0xE0000000;

    /** Items text color */
    private static final int ITEMS_TEXT_COLOR = 0xFF000000;

    /** Top and bottom shadows colors */
    private static final int[] SHADOWS_COLORS = new int[]{0xFF111111, 0x00AAAAAA, 0x00AAAAAA};

    /** Additional items height (is added to standard text item height) */
    private static final int ADDITIONAL_ITEM_HEIGHT = 20;

    /** Text size */
    private static final int TEXT_SIZE = 19;

    /** Top and bottom items offset (to hide that) */
    private static final int ITEM_OFFSET = TEXT_SIZE / 2;

    /** Additional width for items layout */
    private static final int ADDITIONAL_ITEMS_SPACE = 35;

    /** Label offset */
    private static final int LABEL_OFFSET = 13;

    /** Left and right padding value */
    private static final int PADDING = 15;

    /** Default count of visible items */
    private static final int DEF_VISIBLE_ITEMS = 15;

    // Scroll Values
    private ScrollAdapter adapter = null;
    private int currentItem = 0;

    // Widths
    private int itemsWidth = 0;
    private int labelWidth = 0;

    // Count of visible items
    private int visibleItems = DEF_VISIBLE_ITEMS;

    // Text paints
    private TextPaint itemsPaint;
    private TextPaint valuePaint;

    // Layouts
    private StaticLayout itemsLayout;
    private StaticLayout labelLayout;
    private StaticLayout valueLayout;

    // Label & background
    private String label;
    private Drawable centerDrawable;

    // Shadows drawables
    private GradientDrawable topShadow;
    private GradientDrawable bottomShadow;

    // Last touch Y position
    private float lastYTouch;

    // scrolling
    private boolean isScrollingPerformed;

    // listeners
    private final List<OnScrollChangedListener> changingListeners = new LinkedList<OnScrollChangedListener>();
    private final List<OnScrollScrollListener> scrollingListeners = new LinkedList<OnScrollScrollListener>();

    /**
     * Constructor
     */
    public ScrollView(Context context, AttributeSet attrs, int defStyle)
        {
            super(context, attrs, defStyle);
        }

    /**
     * Constructor
     */
    public ScrollView(Context context, AttributeSet attrs)
        {
            super(context, attrs);
        }

    /**
     * Constructor
     */
    public ScrollView(Context context)
        {
            super(context);
        }

    /**
     * Gets Scroll adapter
     * 
     * @return the adapter
     */
    public ScrollAdapter getAdapter()
        {
            return adapter;
        }

    /**
     * Sets whell adapter
     * 
     * @param adapter
     *          the new Scroll adapter
     */
    public void setAdapter(ScrollAdapter adapter)
        {
            this.adapter = adapter;
            invalidate();
        }

    /**
     * Gets count of visible items
     * 
     * @return the count of visible items
     */
    public int getVisibleItems()
        {
            return visibleItems;
        }

    /**
     * Sets count of visible items
     * 
     * @param count
     *          the new count
     */
    public void setVisibleItems(int count)
        {
            visibleItems = count;
            invalidate();
        }

    /**
     * Gets label
     * 
     * @return the label
     */
    public String getLabel()
        {
            return label;
        }

    /**
     * Sets label
     * 
     * @param newLabel
     *          the label to set
     */
    public void setLabel(String newLabel)
        {
            if (label == null || !label.equals(newLabel))
                {
                    label = newLabel;
                    labelLayout = null;
                    invalidate();
                }
        }

    /**
     * Adds Scroll changing listener
     * 
     * @param listener
     *          the listener
     */
    public void addChangingListener(OnScrollChangedListener listener)
        {
            changingListeners.add(listener);
        }

    /**
     * Removes Scroll changing listener
     * 
     * @param listener
     *          the listener
     */
    public void removeChangingListener(OnScrollChangedListener listener)
        {
            changingListeners.remove(listener);
        }

    /**
     * Notifies changing listeners
     * 
     * @param oldValue
     *          the old Scroll value
     * @param newValue
     *          the new Scroll value
     */
    protected void notifyChangingListeners(int oldValue, int newValue)
        {
            for (OnScrollChangedListener listener : changingListeners)
                {
                    listener.onChanged(this, oldValue, newValue);
                }
        }

    /**
     * Adds Scroll scrolling listener
     * 
     * @param listener
     *          the listener
     */
    public void addScrollingListener(OnScrollScrollListener listener)
        {
            scrollingListeners.add(listener);
        }

    /**
     * Removes Scroll scrolling listener
     * 
     * @param listener
     *          the listener
     */
    public void removeScrollingListener(OnScrollScrollListener listener)
        {
            scrollingListeners.remove(listener);
        }

    /**
     * Notifies listeners about starting scrolling
     */
    protected void notifyScrollingListenersAboutStart()
        {
            for (OnScrollScrollListener listener : scrollingListeners)
                {
                    listener.onScrollStarts(this);
                }
        }

    /**
     * Notifies listeners about ending scrolling
     */
    protected void notifyScrollingListenersAboutEnd()
        {
            for (OnScrollScrollListener listener : scrollingListeners)
                {
                    listener.onScrollEnds(this);
                }
        }

    /**
     * Gets current value
     * 
     * @return the current value
     */
    public int getCurrentItem()
        {
            return currentItem;
        }

    /**
     * Sets the current item
     * 
     * @param index
     *          the item index
     */
    public void setCurrentItem(int index)
        {
            if (index != currentItem)
                {
                    itemsLayout = null;
                    valueLayout = null;

                    int old = currentItem;
                    currentItem = index;

                    notifyChangingListeners(old, currentItem);

                    invalidate();
                }
        }

    /**
     * Initializes resources
     */
    private void initResourcesIfNecessary()
        {
            if (itemsPaint == null)
                {
                    itemsPaint = new TextPaint(Paint.ANTI_ALIAS_FLAG | Paint.FAKE_BOLD_TEXT_FLAG);
                    // itemsPaint.density = getResources().getDisplayMetrics().density;
                    itemsPaint.setTextSize(TEXT_SIZE);
                }

            if (valuePaint == null)
                {
                    valuePaint = new TextPaint(Paint.ANTI_ALIAS_FLAG | Paint.FAKE_BOLD_TEXT_FLAG | Paint.DITHER_FLAG);
                    // valuePaint.density = getResources().getDisplayMetrics().density;
                    valuePaint.setTextSize(TEXT_SIZE);
                    valuePaint.setShadowLayer(0.5f, 0, 0.5f, 0xFFFFFFFF);
                }

            if (centerDrawable == null)
                {
                    centerDrawable = getContext().getResources().getDrawable(R.drawable.wheel_val);
                }

            if (topShadow == null)
                {
                    topShadow = new GradientDrawable(Orientation.TOP_BOTTOM, SHADOWS_COLORS);
                }

            if (bottomShadow == null)
                {
                    bottomShadow = new GradientDrawable(Orientation.BOTTOM_TOP, SHADOWS_COLORS);
                }

            setBackgroundResource(R.drawable.wheel_bg);
        }

    /**
     * Calculates desired height for layout
     * 
     * @param layout
     *          the source layout
     * @return the desired layout height
     */
    private int getDesiredHeight(Layout layout)
        {
            if (layout == null) { return 0; }

            int linecount = layout.getLineCount();
            int desired = layout.getLineTop(linecount) - ITEM_OFFSET * 2 - ADDITIONAL_ITEM_HEIGHT;

            // Check against our minimum height
            desired = Math.max(desired, getSuggestedMinimumHeight());

            return desired;
        }

    /**
     * Builds text depending on current value
     * 
     * @return the text
     */
    private String buildText()
        {
            ScrollAdapter adapter = getAdapter();
            StringBuilder itemsText = new StringBuilder();
            int addItems = visibleItems / 2;
            for (int i = currentItem - addItems; i < currentItem; i++)
                {
                    if (i >= 0 && adapter != null)
                        {
                            String text = adapter.getItem(i);
                            if (text != null)
                                {
                                    itemsText.append(text);
                                }
                        }
                    itemsText.append("\n");
                }

            itemsText.append("\n"); // here will be current value

            for (int i = currentItem + 1; i <= currentItem + addItems; i++)
                {
                    if (adapter != null && i < adapter.getItemsCount())
                        {
                            String text = adapter.getItem(i);
                            if (text != null)
                                {
                                    itemsText.append(text);
                                }
                        }
                    if (i < currentItem + addItems)
                        {
                            itemsText.append("\n");
                        }
                }
            return itemsText.toString();
        }

    /**
     * Returns the max item length that can be present
     * 
     * @return the max length
     */
    private int getMaxTextLength()
        {
            ScrollAdapter adapter = getAdapter();
            if (adapter == null) { return 0; }

            int adapterLength = adapter.getMaximumLength();
            if (adapterLength > 0) { return adapterLength; }

            String maxText = null;
            int addItems = visibleItems / 2;
            for (int i = Math.max(currentItem - addItems, 0); i < Math.min(currentItem + visibleItems, adapter.getItemsCount()); i++)
                {
                    String text = adapter.getItem(i);
                    if (text != null && (maxText == null || maxText.length() < text.length()))
                        {
                            maxText = text;
                        }
                }

            return maxText != null ? maxText.length() : 0;
        }

    /**
     * Calculates control width and creates text layouts
     * 
     * @param widthSize
     *          the input layout width
     * @param mode
     *          the layout mode
     * @return the calculated control width
     */
    private int calculateLayoutWidth(int widthSize, int mode)
        {
            initResourcesIfNecessary();

            int width = widthSize;

            int maxLength = getMaxTextLength();
            if (maxLength > 0)
                {
                    float textWidth = FloatMath.ceil(Layout.getDesiredWidth("0", itemsPaint));
                    itemsWidth = (int) (maxLength * textWidth);
                }
            else
                {
                    itemsWidth = 0;
                }
            itemsWidth += ADDITIONAL_ITEMS_SPACE; // make it some more

            labelWidth = 0;
            if (label != null && label.length() > 0)
                {
                    labelWidth = (int) FloatMath.ceil(Layout.getDesiredWidth(label, valuePaint));
                }

            boolean recalculate = false;
            if (mode == MeasureSpec.EXACTLY)
                {
                    width = widthSize;
                    recalculate = true;
                }
            else
                {
                    width = itemsWidth + labelWidth + 2 * PADDING;
                    if (labelWidth > 0)
                        {
                            width += LABEL_OFFSET;
                        }

                    // Check against our minimum width
                    width = Math.max(width, getSuggestedMinimumWidth());

                    if (mode == MeasureSpec.AT_MOST && widthSize < width)
                        {
                            width = widthSize;
                            recalculate = true;
                        }
                }

            if (recalculate)
                {
                    // recalculate width
                    int pureWidth = width - LABEL_OFFSET - 2 * PADDING;
                    if (pureWidth <= 0)
                        {
                            itemsWidth = labelWidth = 0;
                        }
                    if (labelWidth > 0)
                        {
                            double newWidthItems = (double) itemsWidth * pureWidth / (itemsWidth + labelWidth);
                            itemsWidth = (int) newWidthItems;
                            labelWidth = pureWidth - itemsWidth;
                        }
                    else
                        {
                            itemsWidth = pureWidth + LABEL_OFFSET; // no label
                        }
                }

            if (itemsWidth > 0)
                {
                    createLayouts(itemsWidth, labelWidth);
                }

            return width;
        }

    /**
     * Creates layouts
     * 
     * @param widthItems
     *          width of items layout
     * @param widthLabel
     *          width of label layout
     */
    private void createLayouts(int widthItems, int widthLabel)
        {
            if (itemsLayout == null || itemsLayout.getWidth() > widthItems)
                {
                    itemsLayout = new StaticLayout(buildText(), itemsPaint, widthItems, widthLabel > 0 ? Layout.Alignment.ALIGN_OPPOSITE : Layout.Alignment.ALIGN_CENTER, 1, ADDITIONAL_ITEM_HEIGHT, false);
                }
            else
                {
                    itemsLayout.increaseWidthTo(widthItems);
                }

            if (valueLayout == null || valueLayout.getWidth() > widthItems)
                {
                    String text = getAdapter() != null ? getAdapter().getItem(currentItem) : null;
                    valueLayout = new StaticLayout(text != null ? text : "", valuePaint, widthItems, widthLabel > 0 ? Layout.Alignment.ALIGN_OPPOSITE : Layout.Alignment.ALIGN_CENTER, 1, ADDITIONAL_ITEM_HEIGHT, false);
                }
            else
                {
                    valueLayout.increaseWidthTo(widthItems);
                }

            if (widthLabel > 0)
                {
                    if (labelLayout == null || labelLayout.getWidth() > widthLabel)
                        {
                            labelLayout = new StaticLayout(label, valuePaint, widthLabel, Layout.Alignment.ALIGN_NORMAL, 1, ADDITIONAL_ITEM_HEIGHT, false);
                        }
                    else
                        {
                            labelLayout.increaseWidthTo(widthLabel);
                        }
                }
        }

    @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec)
        {
            int widthMode = MeasureSpec.getMode(widthMeasureSpec);
            int heightMode = MeasureSpec.getMode(heightMeasureSpec);
            int widthSize = MeasureSpec.getSize(widthMeasureSpec);
            int heightSize = MeasureSpec.getSize(heightMeasureSpec);

            int width = calculateLayoutWidth(widthSize, widthMode);

            int height;
            if (heightMode == MeasureSpec.EXACTLY)
                {
                    height = heightSize;
                }
            else
                {
                    height = getDesiredHeight(itemsLayout);

                    if (heightMode == MeasureSpec.AT_MOST)
                        {
                            height = Math.min(height, heightSize);
                        }
                }

            setMeasuredDimension(width, height);
        }

    @Override
    protected void onDraw(Canvas canvas)
        {
            super.onDraw(canvas);

            if (itemsLayout == null)
                {
                    if (itemsWidth == 0)
                        {
                            calculateLayoutWidth(getWidth(), MeasureSpec.EXACTLY);
                        }
                    else
                        {
                            createLayouts(itemsWidth, labelWidth);
                        }
                }

            drawCenterRect(canvas);

            if (itemsWidth > 0)
                {
                    canvas.save();
                    // Skip padding space and hide a part of top and bottom items
                    canvas.translate(PADDING, -ITEM_OFFSET);
                    drawItems(canvas);
                    drawValue(canvas);
                    canvas.restore();
                }

            drawShadows(canvas);
        }

    /**
     * Draws shadows on top and bottom of control
     * 
     * @param canvas
     *          the canvas for drawing
     */
    private void drawShadows(Canvas canvas)
        {
            topShadow.setBounds(0, 0, getWidth(), getHeight() / visibleItems);
            topShadow.draw(canvas);

            bottomShadow.setBounds(0, getHeight() - getHeight() / visibleItems, getWidth(), getHeight());
            bottomShadow.draw(canvas);
        }

    /**
     * Draws value and label layout
     * 
     * @param canvas
     *          the canvas for drawing
     */
    private void drawValue(Canvas canvas)
        {
            valuePaint.setColor(VALUE_TEXT_COLOR);
            valuePaint.drawableState = getDrawableState();

            Rect bounds = new Rect();
            itemsLayout.getLineBounds(visibleItems / 2, bounds);

            // draw label
            if (labelLayout != null)
                {
                    canvas.save();
                    canvas.translate(itemsLayout.getWidth() + LABEL_OFFSET, bounds.top);
                    labelLayout.draw(canvas);
                    canvas.restore();
                }

            // draw current value
            canvas.save();
            canvas.translate(0, bounds.top);
            valueLayout.draw(canvas);
            canvas.restore();
        }

    /**
     * Draws items
     * 
     * @param canvas
     *          the canvas for drawing
     */
    private void drawItems(Canvas canvas)
        {
            itemsPaint.setColor(ITEMS_TEXT_COLOR);
            itemsPaint.drawableState = getDrawableState();
            itemsLayout.draw(canvas);
        }

    /**
     * Draws rect for current value
     * 
     * @param canvas
     *          the canvas for drawing
     */
    private void drawCenterRect(Canvas canvas)
        {
            int center = getHeight() / 2;
            int offset = getHeight() / visibleItems / 2;
            centerDrawable.setBounds(0, center - offset, getWidth(), center + offset);
            centerDrawable.draw(canvas);
        }

    @Override
    public boolean onTouchEvent(MotionEvent event)
        {
            ScrollAdapter adapter = getAdapter();
            if (adapter == null) { return true; }

            switch (event.getAction())
                {
                    case MotionEvent.ACTION_DOWN :
                        lastYTouch = event.getY();
                        break;

                    case MotionEvent.ACTION_MOVE :
                        if (!isScrollingPerformed)
                            {
                                isScrollingPerformed = true;
                                notifyScrollingListenersAboutStart();
                            }
                        float delta = event.getY() - lastYTouch;
                        int count = (int) (visibleItems * delta / getHeight());
                        int pos = currentItem - count;
                        pos = Math.max(pos, 0);
                        pos = Math.min(pos, adapter.getItemsCount() - 1);
                        if (pos != currentItem)
                            {
                                lastYTouch = event.getY();
                                setCurrentItem(pos);
                            }
                        break;

                    case MotionEvent.ACTION_UP :
                        if (isScrollingPerformed)
                            {
                                notifyScrollingListenersAboutEnd();
                                isScrollingPerformed = false;
                            }
                        break;
                }
            return true;
        }
}

This is my Log on execution

12-21 10:43:26.174: E/AndroidRuntime(591): FATAL EXCEPTION: main
12-21 10:43:26.174: E/AndroidRuntime(591): java.util.ConcurrentModificationException

12-21 10:43:26.174: E/AndroidRuntime(591): at java.util.LinkedList$LinkIterator.next(LinkedList.java:124)     

12-21 10:43:26.174: E/AndroidRuntime(591): at com.kk.scroll.ScrollView.notifyChangingListeners(ScrollView.java:220)

12-21 10:43:26.174: E/AndroidRuntime(591):  at com.kk.scroll.ScrollView.setCurrentItem(ScrollView.java:296)

12-21 10:43:26.174: E/AndroidRuntime(591):  at com.kk.SellMyCar.Scroller.initScroll1(Scroller.java:135)

12-21 10:43:26.174: E/AndroidRuntime(591):  at com.kk.SellMyCar.Scroller.updateStatus(Scroller.java:117)

12-21 10:43:26.174: E/AndroidRuntime(591):  at com.kk.SellMyCar.Scroller.access$1(Scroller.java:109)

12-21 10:43:26.174: E/AndroidRuntime(591): at com.kk.SellMyCar.Scroller$1.onScrollEnds(Scroller.java:91)

12-21 10:43:26.174: E/AndroidRuntime(591): at com.kk.scroll.ScrollView.notifyScrollingListenersAboutEnd(ScrollView.java:266)

12-21 10:43:26.174: E/AndroidRuntime(591):  at com.kk.scroll.ScrollView.onTouchEvent(ScrollView.java:722)

12-21 10:43:26.174: E/AndroidRuntime(591):  at android.view.View.dispatchTouchEvent(View.java:3766)

12-21 10:43:26.174: E/AndroidRuntime(591):  at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:936)

12-21 10:43:26.174: E/AndroidRuntime(591):  at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:936)

12-21 10:43:26.174: E/AndroidRuntime(591):  at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:936)

12-21 10:43:26.174: E/AndroidRuntime(591):  at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:936)

12-21 10:43:26.174: E/AndroidRuntime(591):  at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:936)

12-21 10:43:26.174: E/AndroidRuntime(591):  at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:1671)

12-21 10:43:26.174: E/AndroidRuntime(591):  at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1107)

12-21 10:43:26.174: E/AndroidRuntime(591):  at android.app.Activity.dispatchTouchEvent(Activity.java:2086)

12-21 10:43:26.174: E/AndroidRuntime(591):  at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:1655)

12-21 10:43:26.174: E/AndroidRuntime(591):  at android.view.ViewRoot.handleMessage(ViewRoot.java:1785)

12-21 10:43:26.174: E/AndroidRuntime(591):  at android.os.Handler.dispatchMessage(Handler.java:99)

12-21 10:43:26.174: E/AndroidRuntime(591):  at android.os.Looper.loop(Looper.java:123)

12-21 10:43:26.174: E/AndroidRuntime(591):  at android.app.ActivityThread.main(ActivityThread.java:4627)

12-21 10:43:26.174: E/AndroidRuntime(591):  at java.lang.reflect.Method.invokeNative(Native Method)

12-21 10:43:26.174: E/AndroidRuntime(591):  at java.lang.reflect.Method.invoke(Method.java:521)

12-21 10:43:26.174: E/AndroidRuntime(591):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)

12-21 10:43:26.174: E/AndroidRuntime(591):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)

12-21 10:43:26.174: E/AndroidRuntime(591):  at dalvik.system.NativeStart.main(Native Method)

解决方案

To answer strictly your question:

java.lang.Arrays.fill() 

provides several methods which allows you to clear the contents of an array.

This will most propably not solve your real problem. ConcurrentModificationException has nothing to do with "clearing" an array.

这篇关于如何清除Java中的String数组中的所有元素?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆