【问题标题】:Contact name and phone number in an EditText - filtered typingEditText 中的联系人姓名和电话号码 - 过滤输入
【发布时间】:2013-05-04 18:56:40
【问题描述】:

我想要做的是有一个 EditText,我可以在那里输入一些名称(这样会出现一个过滤列表,其中的名称与我迄今为止输入的内容相对应)。最后我选择了一个联系人。 EditText 应显示我选择的姓名,但会向与所选联系人对应的号码发送消息(短信)。

这是我的代码,不完整: 当然我在 AndroidManifest 文件中也有一些设置..

公共类 SendSMSActivity 扩展 Activity {

Button buttonSend;
EditText textPhoneNo;
EditText textSMS;
String sms ="";
ListAdapter lAdapter;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.sendsms);

    buttonSend = (Button) findViewById(R.id.buttonSend);
    textPhoneNo = (EditText) findViewById(R.id.editTextPhoneNo);        
    textPhoneNo.addTextChangedListener(new TextWatcher() {

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {
            // TODO Auto-generated method stub
            String srchName = textPhoneNo.getText().toString();
            Cursor cursor = getContentResolver().query(
                    ContactsContract.Contacts.CONTENT_URI,
                    null,
                    ContactsContract.Contacts.HAS_PHONE_NUMBER
                            + " = 1 AND "
                            + ContactsContract.Contacts.DISPLAY_NAME
                            + " like " + "'" + srchName + "%'",
                    null,
                    "UPPER(" + ContactsContract.Contacts.DISPLAY_NAME
                            + ") ASC");
            startManagingCursor(cursor);

            Load(cursor);
        }

        @Override
        public void beforeTextChanged(CharSequence s, int start, int count,
                int after) {
            // TODO Auto-generated method stub

        }

        @Override
        public void afterTextChanged(Editable s) {
            // TODO Auto-generated method stub

        }
    });
    textSMS = (EditText) findViewById(R.id.editTextSMS);

    sms = MainActivityClass.tempSms.toString();
    Log.d("SendSMSActivity", " sms text = " + sms);
    textSMS.setText(sms);
    textSMS.setVisibility(EditText.VISIBLE);

    buttonSend.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {

            String phoneNo = textPhoneNo.getText().toString();
            //String sms = textSMS.getText().toString();


            try {
                SmsManager smsManager = SmsManager.getDefault();
                smsManager.sendTextMessage(phoneNo, null, sms, null, null);
                Toast.makeText(getApplicationContext(), "SMS Sent!",
                        Toast.LENGTH_LONG).show();
            } catch (Exception e) {
                Toast.makeText(getApplicationContext(),
                        "SMS faild, please try again later!",
                        Toast.LENGTH_LONG).show();
                e.printStackTrace();
            }

        }
});

}

}

【问题讨论】:

  • autocompletetextview 你试过这个吗?
  • @Elior 到目前为止,我至少尝试检索名称,但我不确定如何使用光标和 listAdapter。我迷路了。
  • @Raghunandan 我尝试过使用 addTextChangeListener 和 TextWatcher!我是新手,所以我不确定如何将它组合在一起以使其发挥作用。
  • @Diana 你能发布你的代码吗?看看有什么问题会更有帮助
  • 好的,我认为我建议的方式会更容易......而且效率更高......以我的方式(根据我的回答),首先你阅读所有联系人并将其保存到列表中。 . 然后当文本更改时,您会显示包含您键入的字符的联系人

标签: android filter android-edittext phone-number contact-list


【解决方案1】:

我不知道你尝试过什么,但在这一刻,我会给出一些想法:

  1. 创建您自己的包含姓名和电话成员的联系人类。
  2. 在您的联系人列表中使用光标进行迭代,并为每次迭代创建新的联系人 您从联系人列表中收到的姓名和电话。
  3. 当您创建新联系人时,将其存储到一个列表中(我的意思是这样的列表:List<Contact> contacts = new ArrayList<Contact>(); )
  4. 此列表将存储在您的列表适配器中
  5. 当你在editText上输入时,检查是否有一些包含相同字符的联系人

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-01
    • 2011-03-05
    • 2021-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多