0


我正在开发一个应用程序,其中我有一个从内置联系人列表中检索到的联系人姓名的 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();
4

1 回答 1

0

当您向 sqlite 数据库或联系人表提供查询时,如果您的光标为nullcursor.getCount() 不 > 0,那么您可以向该联系人或数据库中不存在数据显示警报消息。

希望这会帮助你。

并 alertView 使用此代码:

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();
于 2012-09-06T05:25:00.900 回答