1

I am aware that this question has been asked multiple times before but none of the solutions have worked for me. This is my code:

public class reminderDAO extends dbManager{



public reminderDAO(Context context) {
    super(context);
}


// Adding new reminder
public void addReminder(Reminder reminder) {
    //dbm.gettingWritable(values);
    SQLiteDatabase db = getWritableDatabase();

    ContentValues values = new ContentValues();
    values.put(getKEY_DATE(), reminder.getReminderDate());
    values.put(getKEY_TITLE(), reminder.getReminderTitle());
    values.put(getKEY_DESC(), reminder.getReminderDescription());
    values.put(getKEY_TIME(), reminder.getReminderTime());


    // Inserting Row
    db.insert(getDATABASE_TABLE(), null, values);
    db.close(); // Closing database connection
}

public List<Reminder> getAllReminders(ListView lv) {



    ArrayList<Reminder> reminderList = new ArrayList<Reminder>();
    // Select All Query
    String selectQuery = "SELECT  * FROM " + getDATABASE_TABLE();

    SQLiteDatabase db = this.getWritableDatabase();
    Cursor cursor = db.rawQuery(selectQuery, null);
    MainActivity ma = new MainActivity();



    // looping through all rows and adding to list
    if (cursor.moveToFirst()) {
        do {
            Reminder r = new Reminder();

            r.setReminderDate(cursor.getString(0));
            r.setReminderTitle(cursor.getString(1));
            r.setReminderDescription(cursor.getString(2));
            r.setReminderTime(cursor.getString(3));
            // Adding reminder to list
            reminderList.add(r);


        } while (cursor.moveToNext());
    }
    ArrayAdapter<Reminder> arrayAdapter = new ArrayAdapter<Reminder>(
            this,
            android.R.layout.simple_list_item_1,
            reminderList );

    lv.setAdapter(arrayAdapter);
    // return reminder list
    return reminderList;
}
}

I've got a feeling it is to do with 'this' inside the arrayAdapter. I have tried getActivity(), this.getActivity(), reminderDAO.this.getActivity(), MainActivity.this and reminderDAO.this.

Anyone have a solution?

6
  • just a side node: Take care about the java code conventions. Class names should always start UpperCase: ReminderDao and DbManager is a better naming. Commented Nov 25, 2015 at 11:26
  • Ok thanks, noted. Any idea about the error I'm getting? Commented Nov 25, 2015 at 11:27
  • Did you tried context? Commented Nov 25, 2015 at 11:27
  • Just tried that there and I'm still getting the same error Commented Nov 25, 2015 at 11:29
  • what does the IDE complains about? what is the error message? Commented Nov 25, 2015 at 11:30

1 Answer 1

1

Create a Context variable in your class. and assign it from the constructor parameter.

private Context context;

public reminderDAO(Context context) {
    this.context = context;
    super(context);
}

Then use this variable to pass to the ArrayAdapter

ArrayAdapter<Reminder> arrayAdapter = new ArrayAdapter<Reminder>(
            this.context,
            android.R.layout.simple_list_item_1,
            reminderList );
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.