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データベースまたは連絡先テーブルにクエリを実行するときに、カーソルがnullであるか、 cursor.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 に答える