我正从电话中获取联系人列表。我试图将选定的联系人存储到数据库,因为我想稍后检索它。我试图将它存储为字符串。我正在使用微调器来显示联系人列表。但是数据库正在存储联系人,如下所示:
android.content.ContentResolver$CursorWrapperInner@1516bf58
但是显示时应用程序会正确显示联系人,如下所示:
9983635353 凯沙夫
我希望以我看到的方式存储。我为此编写了以下代码,但目前我无法实现这一点。请让我知道我需要做出哪些改变才能使其正常工作。欢迎所有建议。提前谢谢。
我的代码来获取联系人并保存它们:
contacts1 = (Spinner) findViewById(R.id.spinnerContacts);
cursor1 = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, null, null, null);
String[] from = {ContactsContract.CommonDataKinds.Phone.NUMBER, ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME, ContactsContract.CommonDataKinds.Phone._ID};
int[] to = {R.id.textViewNumber, R.id.textViewEmail};
myCursorAdapter = new SimpleCursorAdapter(getBaseContext(), R.layout.custom_spinner_row, cursor1, from, to, 0);
contacts1.setAdapter(myCursorAdapter);
contacts1.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
contacts = parent.getItemAtPosition(position).toString();
Log.d("Pana", "The value of the contact field is " +parent.getItemAtPosition(position).toString());
Toast.makeText(getApplicationContext(), "The value of Position selected is " +position, Toast.LENGTH_LONG).show();
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
long id = sqliteHelper.insertData( contacts );
下面是我的数据库insertData方法:
public long insertData( String contacts) {
db = helper.getWritableDatabase();
ContentValues contentValues = new ContentValues();
contentValues.put(SQLiteHelper.CONTACTS, contacts);
id = db.insert(SQLiteHelper.TABLE_NAME, null, contentValues);
Log.d("PaNa", "The value of Id is " + id);
db.close();
return id;
}
请让我知道我需要做哪些更改才能完全按照我在应用程序显示中看到的方式保存联系人数据。提前谢谢。
答案 0 :(得分:1)
下面:
parent.getItemAtPosition(position)
将为所选行而不是String返回Cursor
对象。
Cursor selectedCursor=(Cursor)parent.getItemAtPosition(position);
String strNumber=selectedCursor.getString(0);
String strName=selectedCursor.getString(1);