Ben C
Ben C

Reputation: 107

Android cannot resolve constructor ArrayAdapter

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?

Upvotes: 1

Views: 2033

Answers (1)

Emil
Emil

Reputation: 2806

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 );

Upvotes: 1

Related Questions