customer.setID(cursor,getInt(cursor.getColumnIndex(CustomersDB.COLUMN_ID)));
Скорее всего, должно быть customer.setID(cursor.getInt(cursor.getColumnIndex(CustomersDB.COLUMN_ID)));
т.е. getInt
- это открытый метод объекта Cursor, поэтому для вызова курсора вы кодируете имя объекта курсора, за которым следует полная остановка, за которой следует метод getInt, например,
cursor.getInt(column_offset_as_an_integer) // e.g. cursor.getColumnIndex(column_name_as_a_string) will return the column offset as an integer (if found)
Не следует также предполагать, что метод Cursor moveToFirst
всегда перемещается в первую строку, как если бы строк не было, он не может перемещаться в первую строку. Вы всегда должны проверять возвращаемое значение, логическое значение, которое будет истинным, если движение может быть сделано, если нет, то оно будет ложным.
Таким образом, ваш код должен выглядеть так: -
public Customers getCustomerByCursor(Cursor cursor){
Customers customer=new Customers();
if (cursor.moveToFirst()) {
customer.setID(cursor.getInt(cursor.getColumnIndex(CustomersDB.COLUMN_ID)));
customer.setAccount_name(cursor.getString(cursor.getColumnIndex(CustomersDB.COLUMN_ACCOUNTNAME)));
customer.setName(cursor.getString(cursor.getColumnIndex(CustomersDB.COLUMN_NAME)));
customer.setLastname(cursor.getString(cursor.getColumnIndex(CustomersDB.COLUMN_LASTNAME)));
customer.setAddress(cursor.getString(cursor.getColumnIndex(CustomersDB.COLUMN_ADDRESS)));
customer.setPhone(cursor.getString(cursor.getColumnIndex(CustomersDB.COLUMN_PHONE)));
customer.setIsactive(true);
customer.setPassword(cursor.getString(cursor.getColumnIndex(CustomersDB.COLUMN_PASSWORD)));
}
return customer;
}
- Принимая во внимание, что в случае, когда курсор не содержит строк, возвращенный объект Customers не будет иметь никаких установленных значений. Скорее всего, вы проверили бы возвращенный объект Customers, чтобы проверить наличие таких случаев.