2014-09-04 24 views
-2

您好新来使用android的SQLite工作,我一直在寻找一种方式来使用SQLite数据库存储长,而我正在处理用户对象的CRUD操作。 我insertDetails方法是在这里:从长长的对象

public Long insertDetails(String fname, String lname,String sex,String birthdate) { 
    ContentValues contentValues = new ContentValues(); 
    contentValues.put(UserOpenHelper.FNAME, fname); 
    contentValues.put(UserOpenHelper.LNAME, lname); 
    contentValues.put(UserOpenHelper.SEX, sex); 
    contentValues.put(UserOpenHelper.BIRTHDATE, birthdate); 
    opnToWrite(); 
    long val = database_ob.insert(UserOpenHelper.TABLE_NAME, null, 
      contentValues); 


    Close(); 
    return val; 

} 

和我得到的错误在UserActivity,

List<User> values = datasource.getAllUsers(); 
    ArrayAdapter<User> adapter = new ArrayAdapter<User>(this, 
      android.R.layout.simple_list_item_1, values); 
    setListAdapter(adapter); 
    User User= datasource.insertDetails(firstname, lastname, sex, birthdate);//here (1) 
    adapter.add(User); 
    long val = adapter.insertDetails(firstname, lastname, sex, birthdate); //here (2) 
    //long vall= adapter.insert(User, index) 
    // db.addUser(new User(firstname, lastname, sex, birthdate)); 
    Log.d("filter", "inserted"); 

错误:

(1)型不匹配:不能从长转换为用户

(2) - 方法insertDetails(String,String,String,String)未定义为类型ArrayAdapter

任何帮助,请

+0

这两个错误都是编译时错误,这意味着你不知道java的基本知识...... 1)datasource.insertDetails返回Long ...即使你将它转换为User'User User =(用户)datasource.insertDetails(...)''你将得到运行时异常(ClassCastException)... 2)'方法insertDetails(字符串,字符串,字符串,字符串)是未定义的类型ArrayAdapter'意味着(鼓!!!)的方法insertDetails(字符串,字符串,字符串,字符串)是未定义的类型ArrayAdapter(ArrayAdapter没有这样的方法)...所以请在提问 – Selvin 2014-09-04 13:22:49

+0

问题之前学习一些Java基础知识,但没有帮助,是java和android的新手,这就是我在这里做的,找到我的问题的答案。大家都开始在同一点 – user3476925 2014-09-04 13:30:09

回答

0

(1)型不匹配:不能从长转换为用户

看着insertDetails的签名,

public Long insertDetails(String, String, String, String) 

该方法返回的对象键入Long。因为你正在试图将其分配给一个用户对象编译器会抱怨

User User= datasource.insertDetails(firstname, lastname, sex, birthdate);//here (1) 

(2) - 该方法insertDetails(字符串,字符串,字符串,字符串)是 未定义类型ArrayAdapter

您正在使用ArrayAdapter的默认实现,该实现不执行insertDetails方法。这就是为什么编译器抱怨

+0

只要在insertDetails()应该更改为用户,并尝试实现另一个ArrayAdapter? – user3476925 2014-09-04 13:33:01

+0

你可以,但为什么你应该返回你刚创建的东西?对于第二个,答案是肯定的。您可以继承ArrayAdapter并实现该方法 – Blackbelt 2014-09-04 13:34:51

+0

正在将用户添加到SQLite数据库,然后我想检索它们并在ListView中显示它们。我怎样才能以简单的方式做到这一点? – user3476925 2014-09-04 13:37:02