Java I';我想在ArrayList里放个记号笔

Java I';我想在ArrayList里放个记号笔,java,android,Java,Android,我试图以这种方式在ArrayList中放置一个标记: 首先,我在MainActivity类中声明: public ArrayList<Marker> myList = new ArrayList<Marker>(); 然后我写下下一个标记按钮被按下 myButton.setOnClickListener(new View.OnClickListener() { public void onClick(View view) { LatL

我试图以这种方式在ArrayList中放置一个标记:

首先,我在MainActivity类中声明:

public ArrayList<Marker> myList = new ArrayList<Marker>();
然后我写下下一个标记按钮被按下

    myButton.setOnClickListener(new View.OnClickListener() 
    {
    public void onClick(View view) 
{
    LatLng latLng = new LatLng(currentLatitude, currentLongitude)


    if (myList.get(0) != null)
    {

                        MarkerOptions options = new MarkerOptions()
                        .position(latLng)                        
                        myList.add(1,mMap.addMarker(options));

    }
    else if (myList.get(0) != null && (myList.get(1) != null))
    {                      
                        MarkerOptions options = new MarkerOptions()
                       .position(latLng)                                        
                        myList.add(2,mMap.addMarker(options));        
    }
应用程序在一开始就崩溃了。。。 当标签[]代替列表时,程序将工作


java.lang.IndexOutOfBoundsException:索引0无效,大小为0


我打赌是这条线导致了这次事故:

myList.add(1,mMap.addMarker(选项))

如果
myList
为空,调用
myList.add(foo,1)
将抛出
IndexOutOfBoundsException
,导致应用程序崩溃。原因是数组是0索引的,这意味着第一个值位于索引0处。这听起来可能有悖常理,但向空列表的索引1中添加某些内容实际上是试图设置其第二个元素


总的来说,您的代码结构非常奇怪。
List.add(Object o)
的非索引版本在列表末尾添加了一个项目,因此您可以在您的
OnClickListener
中使用该项目。我打赌这一行是导致崩溃的原因:

myList.add(1,mMap.addMarker(选项))

如果
myList
为空,调用
myList.add(foo,1)
将抛出
IndexOutOfBoundsException
,导致应用程序崩溃。原因是数组是0索引的,这意味着第一个值位于索引0处。这听起来可能有悖常理,但向空列表的索引1中添加某些内容实际上是试图设置其第二个元素


总的来说,您的代码结构非常奇怪。
List.add(Object o)
的非索引版本在列表末尾添加了一个项,因此您可以在
OnClickListener
中使用该项,然后在获取数组的索引0之前,检查它是否为空

if (!myList.isEmpty())
{
 if (myList.get(0)==null)
  {
     //do your thing
  }
}

在获取数组的索引0之前,请检查它是否为空

if (!myList.isEmpty())
{
 if (myList.get(0)==null)
  {
     //do your thing
  }
}

那些空检查是不必要的,只需使用
List.add(Object o)
函数,它不将索引作为参数。

那些空检查是不必要的,只需使用
List.add(Object o)
函数,它不将索引作为参数。

add Logcat,带有错误。java.lang.indexoutboundsException:无效的索引0,大小为0请指出获取异常的行…这表示您正在尝试在空列表中获取(0)或等效项。请注意,仅测试
myList.get(0)
是否不为null是不够的,因为调用
get()
方法就足以发生错误。相反,请尝试类似于
if(!myList.isEmpty())
和/或
if(myList.size()>=2)
的操作。添加Logcat,但出现错误。java.lang.IndexOutOfBoundsException:索引0无效,大小为0请指出获取异常的行……这意味着您正在尝试在空列表上获取
myList.get(0)
或等效项。请注意,仅测试
myList.get(0)
是否不为null是不够的,因为调用
get()
方法就足以发生错误。相反,尝试类似于
if(!myList.isEmpty())
和/或
if(myList.size()>=2)