Search code examples
androidandroid-cursor

CursorWrapper is duplicating row when skipping over 1


I am hiding a row with a specific employee_number and now when I do so, the row that is being skipped is being populated with the data from the row before it. Not sure how to not have this duplicate and just skip over it?

CustomCursorWrapper.java:

public class CustomCursorWrapper extends CursorWrapper {

    private String mStartingEmployeeID = "startingNumber";
    Employee employee;


    public CustomCursorWrapper(Cursor cursor) {
        super(cursor);
    }

    @Override
    public int getCount() {

        //if you want to exclude just one row
        return super.getCount() - 1;
    }

    @Override
    public boolean moveToPosition(int position) {
        if(!super.moveToPosition(position))
            return false;

        if(mStartingEmployeeID.equals(getString(getColumnIndex("Employee_number")))) {
            //if this is the row you wanna skip
            return super.moveToPosition(position + 1);
        }
        Log.d("WRAPPER", String.valueOf(position));
        return true;
    }
}

Also when I look at the log I placed in here, the positions are comming back as:

01-31 20:57:58.984 5533-5533/com.example.agar098.oneteam D/WRAPPER: 0
01-31 20:57:59.004 5533-5533/com.example.agar098.oneteam D/WRAPPER: 0
01-31 20:57:59.004 5533-5533/com.example.agar098.oneteam D/WRAPPER: 1
01-31 20:57:59.004 5533-5533/com.example.agar098.oneteam D/WRAPPER: 1
01-31 20:57:59.004 5533-5533/com.example.agar098.oneteam D/WRAPPER: 1
01-31 20:57:59.004 5533-5533/com.example.agar098.oneteam D/WRAPPER: 2
01-31 20:57:59.004 5533-5533/com.example.agar098.oneteam D/WRAPPER: 2
01-31 20:57:59.004 5533-5533/com.example.agar098.oneteam D/WRAPPER: 2
01-31 20:57:59.004 5533-5533/com.example.agar098.oneteam D/WRAPPER: 3
01-31 20:57:59.004 5533-5533/com.example.agar098.oneteam D/WRAPPER: 3
01-31 20:57:59.004 5533-5533/com.example.agar098.oneteam D/WRAPPER: 3
01-31 20:57:59.014 5533-5533/com.example.agar098.oneteam D/WRAPPER: 4
01-31 20:57:59.014 5533-5533/com.example.agar098.oneteam D/WRAPPER: 4
01-31 20:57:59.024 5533-5533/com.example.agar098.oneteam D/WRAPPER: 4
01-31 20:57:59.024 5533-5533/com.example.agar098.oneteam D/WRAPPER: 0
01-31 20:57:59.024 5533-5533/com.example.agar098.oneteam D/WRAPPER: 0
01-31 20:57:59.024 5533-5533/com.example.agar098.oneteam D/WRAPPER: 0
01-31 20:57:59.024 5533-5533/com.example.agar098.oneteam D/WRAPPER: 1
01-31 20:57:59.024 5533-5533/com.example.agar098.oneteam D/WRAPPER: 1
01-31 20:57:59.024 5533-5533/com.example.agar098.oneteam D/WRAPPER: 1
01-31 20:57:59.024 5533-5533/com.example.agar098.oneteam D/WRAPPER: 2
01-31 20:57:59.024 5533-5533/com.example.agar098.oneteam D/WRAPPER: 2
01-31 20:57:59.024 5533-5533/com.example.agar098.oneteam D/WRAPPER: 2
01-31 20:57:59.024 5533-5533/com.example.agar098.oneteam D/WRAPPER: 3
01-31 20:57:59.034 5533-5533/com.example.agar098.oneteam D/WRAPPER: 3
01-31 20:57:59.034 5533-5533/com.example.agar098.oneteam D/WRAPPER: 3
01-31 20:57:59.034 5533-5533/com.example.agar098.oneteam D/WRAPPER: 0
01-31 20:57:59.034 5533-5533/com.example.agar098.oneteam D/WRAPPER: 0
01-31 20:57:59.034 5533-5533/com.example.agar098.oneteam D/WRAPPER: 0
01-31 20:57:59.034 5533-5533/com.example.agar098.oneteam D/WRAPPER: 1
01-31 20:57:59.044 5533-5533/com.example.agar098.oneteam D/WRAPPER: 1
01-31 20:57:59.044 5533-5533/com.example.agar098.oneteam D/WRAPPER: 2
01-31 20:57:59.044 5533-5533/com.example.agar098.oneteam D/WRAPPER: 2
01-31 20:57:59.044 5533-5533/com.example.agar098.oneteam D/WRAPPER: 3
01-31 20:57:59.054 5533-5533/com.example.agar098.oneteam D/WRAPPER: 3
01-31 20:58:16.174 5533-5533/com.example.agar098.oneteam D/WRAPPER: 4
01-31 20:58:16.194 5533-5533/com.example.agar098.oneteam D/WRAPPER: 4
01-31 20:58:16.944 5533-5533/com.example.agar098.oneteam D/WRAPPER: 6
01-31 20:58:16.944 5533-5533/com.example.agar098.oneteam D/WRAPPER: 6
01-31 20:58:16.944 5533-5533/com.example.agar098.oneteam D/WRAPPER: 6
01-31 20:58:17.214 5533-5533/com.example.agar098.oneteam D/WRAPPER: 7
01-31 20:58:17.214 5533-5533/com.example.agar098.oneteam D/WRAPPER: 7
01-31 20:58:17.214 5533-5533/com.example.agar098.oneteam D/WRAPPER: 7
01-31 20:58:17.804 5533-5533/com.example.agar098.oneteam D/WRAPPER: 8
01-31 20:58:17.804 5533-5533/com.example.agar098.oneteam D/WRAPPER: 8
01-31 20:58:17.804 5533-5533/com.example.agar098.oneteam D/WRAPPER: 8
01-31 20:58:17.954 5533-5533/com.example.agar098.oneteam D/WRAPPER: 9
01-31 20:58:17.954 5533-5533/com.example.agar098.oneteam D/WRAPPER: 9
01-31 20:58:17.954 5533-5533/com.example.agar098.oneteam D/WRAPPER: 9

Solution

  • The best and proper solution would be to query the database with an SQLite filter clause statement to exclude the rows you do not want. That way, you would not have to write a bunch of hacks to just skip a single row.

    eg.

    getReadableDatabase().rawQuery("SELECT * FROM TABLE_NAME WHERE COLUMN != employeeId",null);

    Will return a cursor with all the rows except the one that matches the passed in employee id.