【问题标题】:how to add and get class's object values in HashMap如何在 HashMap 中添加和获取类的对象值
【发布时间】:2014-02-15 01:15:21
【问题描述】:

我想创建一个将数据添加到sqlite 数据库的方法,该方法将HashMap<String,Person> 作为类中的参数。

从另一个类中,我想在HashMap<String,Person> 中添加可以被我的数据库处理程序类使用的人员详细信息。

我进行了很多搜索并尝试了很多示例,但无法找到解决方案。现在我有点困惑如何做到这一点。

我现在以以下方式执行此操作,并获得ClassCastException。

第 1 类:PersonDataSource.java

public long createContact(HashMap<String, Contact> queryValues) {
ContentValues values = new ContentValues();    
Contact val = Contact.class.cast(queryValues);   

values.put(  MySQLiteHelper.COLUMN_FIRST_NAME,  val.getFirstName());
values.put(  MySQLiteHelper.COLUMN_LAST_NAME, val.getLastName());
values.put(  MySQLiteHelper.COLUMN_NICK_NAME, val.getNickName());
values.put(  MySQLiteHelper.COLUMN_BIRTHDATE, val.getBirthDate());  
values.put(  MySQLiteHelper.COLUMN_PRIMARY_CONTACT, val.getPrimaryContact());

long insertId = database.insert(MySQLiteHelper.TABLE_NAME, null, values);
return insertId;
}

并形成另一个类:

datasource = new ContactDataSource(this);
datasource.open();

    Cursor phones = getContentResolver().query(Phone.CONTENT_URI, PROJECTION,null,null, Phone.DISPLAY_NAME);
        while (phones.moveToNext())
        {
          String name=phones.getString(phones.getColumnIndex(Phone.DISPLAY_NAME));
          String phoneNumber = phones.getString(phones.getColumnIndex(Phone.NUMBER));

          Person data = new Person();
          data.setNickName(name);
          data.setPrimaryContact(phoneNumber);

          HashMap<String, Person> map =  new  HashMap<String, Person>();
          map.put("data", data);

          long id = datasource.createContact(map);

          Log.e(CLASS_NAME, "Contact id :" + String.valueOf(id));
        }
        phones.close();
        datasource.close();

我该如何解决这个问题?

【问题讨论】:

    标签: java android sqlite hashmap classcastexception


    【解决方案1】:

    使用

    Contact val = (Contact) queryValues.get("data"); 
    

    代替

    Contact val = Contact.class.cast(queryValues); 
    

    这是因为,您试图将单个联系人作为map.put("data", data); 放入地图中,因此当您阅读此条目时,您需要使用map.get("data"),因为这里的键是data。

    【讨论】:

    • 太棒了,做得很好。你能提供一些关于这个问题的解释吗??
    • @I-droid 添加了解释。如果有任何困惑,请随时问.. :)
    猜你喜欢
    • 2012-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-15
    • 1970-01-01
    • 2012-02-25
    • 1970-01-01
    • 2013-04-21
    相关资源
    最近更新 更多