内置联系人和数据库表不匹配时如何触发用户提示信息?[Android]
Posted
技术标签:
【中文标题】内置联系人和数据库表不匹配时如何触发用户提示信息?[Android]【英文标题】:How to trigger an alert message for user when there's no match with built-in contacts and database table?[Android] 【发布时间】:2012-08-30 18:58:48 【问题描述】:我正在开发一个应用程序,其中我有一个从内置联系人列表中检索到的联系人姓名的 ListView。我使用 ContentProvider 从内置联系人列表中获取姓名。另外,我将 ListView 中的名称存储到我的数据库表中。
我需要将内置联系人列表与数据库表同步。因此,当内置的 ContactsContract 中的 DISPLAY_NAME 与我的表中的名称不匹配时,我需要为用户触发警报消息。而且,用户必须手动更改名称,而我必须更改表中的名称。 我怎么做?我需要这方面的帮助。
感谢您提供的任何帮助。任何示例和教程也将不胜感激。 谢谢!
更新
ContactsList.java - 这是从 android 手机的联系人中检索到的联系人的 ListView。
BuddyDBAdapter buddyDB = new BuddyDBAdapter(this);
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.contacts_list);
ListView list = getListView();
setListAdapter(new ArrayAdapter<String> (this, R.layout.contacts_list, R.id.contactName, buddiesList));
Uri allContacts = Uri.parse("content://contacts/people");
Cursor c = managedQuery(allContacts, null, null, null, null);
String[] columns = new String[] ContactsContract.Contacts.DISPLAY_NAME;
int[] views = new int[] R.id.contactName;
startManagingCursor(c);
SimpleCursorAdapter adapter = new SimpleCursorAdapter(this, R.layout.contacts_list, c, columns, views);
this.setListAdapter(adapter);
@Override
public void onListItemClick(ListView l, View v, int position, long id)
buddyDB.open();
long name_id;
super.onListItemClick(l, v, position, id);
/*String action = getIntent().getAction();
if(Intent.ACTION_VIEW.equals(action))
//startActivity(intent);
*/
//startActivityForResult(new Intent(Intent.ACTION_PICK),PICK_CONTACT);
Cursor c = ((SimpleCursorAdapter)l.getAdapter()).getCursor();
TextView contactName = (TextView) v.findViewById(R.id.contactName);
String NameValue = contactName.getText().toString();
name_id = buddyDB.insertNames(NameValue);
Toast.makeText(getBaseContext(),
"Selected: " + buddiesList[position], Toast.LENGTH_SHORT).show();
buddyDB.close();
【问题讨论】:
您可以为此使用 AlertDialog。当您从数据库中检索并且当您没有进入contactList 时,只显示警报。 【参考方案1】:当您向 sqlite 数据库或联系人表提供查询时,如果您的光标是 null 或 cursor.getCount() 不是 > 0 那么您可以显示警报数据库中不存在该联系人或数据的消息。
希望这会对你有所帮助。
并使用此代码来提醒视图:
final AlertDialog alertDialog = new AlertDialog.Builder(this).create();
alertDialog.setTitle("ALERT");
alertDialog.setMessage("NO DATA FOUND");
alertDialog.setIcon(R.drawable.warning);
alertDialog.setButton("OK",new DialogInterface.OnClickListener()
public void onClick(DialogInterface dialog, int which)
// DO YOUR STUFF ON CLICK OF OK
);
alertDialog.show();
【讨论】:
顺便说一下,我的代码有两个光标,我不确定cursor.getCount() is not > 0
需要使用哪些光标。我将在上面发布我的代码。
您好,我想问您,我的代码是否正确,因为我不确定。它在 onCreate() 方法中:if(cursor.getCount()>0) final AlertDialog alertDialog = new AlertDialog.Builder(this).create(); alertDialog.setTitle("ALERT!"); alertDialog.setMessage("NO Name is Found! D:"); alertDialog.setIcon(R.drawable.warning); alertDialog.setButton("OK", new DialogInterface.OnClickListener() public void onClick(DialogInterface dialog, int which) ); alertDialog.show();
我已经在 onCreate() 方法上方声明了光标 - Cursor cursor;
如果 cursor.getCount() > 0 那么你应该显示联系人或同步任何你想要的。当它为
如果有人给你时间回答你的问题,你应该对他们的回答做出回应,他们对你的问题有什么帮助。以上是关于内置联系人和数据库表不匹配时如何触发用户提示信息?[Android]的主要内容,如果未能解决你的问题,请参考以下文章