IllegalStateException:从第0行col -1获取字段槽失败

时间:2011-01-26 21:07:48

标签: android cursor listadapter

int columnIndexFromAddrCountry;

public FavoritesActAdapter(Context context, int layout, 
        Cursor c, String[] from, int[] to) {
    super(context, layout, c, from, to);
    gnCursor = c;

    columnIndexFromAddrCountry = 
        c.getColumnIndex(DBAdapter.KEY_FROM_ADDR_COUNTRY);

}

@Override
public void bindView(View view, Context context, Cursor cursor) {
    gnCursor = getCursor();

    final String fromAddrCountry = 
        gnCursor.getString(columnIndexFromAddrCountry);

        ...

        super.bindView(view, context, cursor);
}

为什么我会收到IllegalStateException

  

IllegalStateException:获取字段槽   从第0行col -1失败

这个例外是什么意思?此行抛出异常

final String fromAddrCountry = gnCursor.getString(columnIndexFromAddrCountry);

因为columnIndexFromAddrCountry-1。 该列存在,可以解析其他十列。什么可能导致这个问题?

提前致谢!

1 个答案:

答案 0 :(得分:2)

DBAdapter.KEY_FROM_ADDR_COUNTRY设置为什么?

来自Cursor doc

  

public abstract int getColumnIndex   (String columnName)

     

自:API Level 1返回   给定列的从零开始的索引   name,如果列不匹配,则返回-1   存在。如果您希望列到   存在使用   getColumnIndexOrThrow(String)代替,   这将使错误更加清晰

因此,您可以使用getColumnIndexOrThrow(String)获得更好的错误消息,以帮助您进行调试。