2015-11-25 51 views
1

我知道这个问题之前已经被多次询问过,但没有一个解决方案适用于我。这是我的代码:Android无法解析构造函数ArrayAdapter

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

我有一种感觉,它是与“本”一个ArrayAdapter里面做。我尝试过getActivity(),this.getActivity(),reminderDAO.this.getActivity(),MainActivity.this和reminderDAO.this。

任何人都有解决方案?

+0

只是一个侧面节点:取有关Java编码规范护理。类名始终应该启动UpperCase:ReminderDao和DbManager是一个更好的命名。 –

+0

好的,谢谢,注意。任何关于我得到的错误的想法? –

+0

您是否尝试过“上下文”? – Emil

回答

1

在你的类中创建一个Context变量。并从构造函数参数中分配它。

private Context context; 

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

然后使用这个变量来传递给ArrayAdapter

ArrayAdapter<Reminder> arrayAdapter = new ArrayAdapter<Reminder>(
      this.context, 
      android.R.layout.simple_list_item_1, 
      reminderList); 
+0

谢谢,这工作 –

相关问题