これが何度も同じ質問のように見える場合は申し訳ありません...しかし、これをGoogleで検索しても結果が得られませんこれはリンクと同じかもしれませんが、解決策を得ることができません
MultiAutoCompleteTextView の複数の連絡先を返すように、AutoCompleteTextView の stackoverflow で見たコードを変更しようとしています。elulator で実行しているときに、選択する候補が表示されなくなりました。私はそれが問題だと感じています。
助けてくれてありがとう。
multiautocompletetextview の次のコードがあります。
<MultiAutoCompleteTextView
android:id="@+id/mmWhoNo"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textColor="#0000A0"
android:hint="Choose your Contacts" />
そして最後に、連絡先を選択して取得した連絡先を読み取るために、次のものがありましたautocomplete textview
and my activity_main.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<TextView
android:id="@+id/ccontName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Large Text"
android:textAppearance="?android:attr/textAppearanceLarge"
android:textColor="#A5000000" />
<TextView
android:id="@+id/ccontNo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_below="@id/ccontName"
android:text="Medium Text"
android:textAppearance="?android:attr/textAppearanceMedium"
android:textColor="#A5000000" />
<TextView
android:id="@+id/ccontType"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_above="@id/ccontNo"
android:layout_alignParentRight="true"
android:layout_marginRight="14dp"
android:text="Small Text"
android:textAppearance="?android:attr/textAppearanceSmall"
android:textColor="#A5000000" />
</LinearLayout>
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import android.os.Bundle;
import android.provider.ContactsContract;
import android.app.Activity;
import android.database.Cursor;
import android.view.Menu;
import android.view.View;
import android.widget.AdapterView;
import android.widget.MultiAutoCompleteTextView;
import android.widget.SimpleAdapter;
public class MainActivity extends Activity {
private ArrayList<Map<String, String>> mPeopleList;
private SimpleAdapter mAdapter;
private MultiAutoCompleteTextView mTxtPhoneNo;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_contact_with_auto);
mPeopleList = new ArrayList<Map<String, String>>();
PopulatePeopleList();
mTxtPhoneNo = (MultiAutoCompleteTextView) findViewById(R.id.mmWhoNo);
mAdapter = new SimpleAdapter(this, mPeopleList, R.layout.activity_main,
new String[] { "Name", "Phone", "Type" }, new int[] {
R.id.ccontName, R.id.ccontNo, R.id.ccontType });
mTxtPhoneNo.setAdapter(mAdapter);
}
public void PopulatePeopleList() {
mPeopleList.clear();
Cursor people = getContentResolver().query(
ContactsContract.Contacts.CONTENT_URI, null, null, null, null);
while (people.moveToNext()) {
String contactName = people.getString(people
.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
String contactId = people.getString(people
.getColumnIndex(ContactsContract.Contacts._ID));
String hasPhone = people
.getString(people
.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER));
if ((Integer.parseInt(hasPhone) > 0)){
// You know have the number so now query it like this
Cursor phones = getContentResolver().query(
ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
null,
ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = "+ contactId,
null, null);
while (phones.moveToNext()){
//store numbers and display a dialog letting the user select which.
String phoneNumber = phones.getString(
phones.getColumnIndex(
ContactsContract.CommonDataKinds.Phone.NUMBER));
String numberType = phones.getString(phones.getColumnIndex(
ContactsContract.CommonDataKinds.Phone.TYPE));
Map<String, String> NamePhoneType = new HashMap<String, String>();
NamePhoneType.put("Name", contactName);
NamePhoneType.put("Phone", phoneNumber);
if(numberType.equals("0"))
NamePhoneType.put("Type", "Work");
else
if(numberType.equals("1"))
NamePhoneType.put("Type", "Home");
else if(numberType.equals("2"))
NamePhoneType.put("Type", "Mobile");
else
NamePhoneType.put("Type", "Other");
//Then add this map to the list.
mPeopleList.add(NamePhoneType);
}
phones.close();
}
}
people.close();
startManagingCursor(people);
}
public void onItemClick(AdapterView<?> av, View v, int index, long arg){
// Map<String, String> map = (Map<String, String>) av.getItemAtPosition(index);
// Iterator<String> myVeryOwnIterator = map.keySet().iterator();
// while(myVeryOwnIterator.hasNext()) {
// String key=(String)myVeryOwnIterator.next();
// String value=(String)map.get(key);
// mTxtPhoneNo.setText(value);
// }
Map<String, String> map = (Map<String, String>) av.getItemAtPosition(index);
String name = map.get("Name");
String number = map.get("Phone");
mTxtPhoneNo.setText(""+name+"<"+number+">");
}
}
複数の連絡先の詳細を取得するように私に勧めることはできますか。の上MultiAutoCompleteTextView
we have to change in manifast.xml
<uses-permission android:name="android.permission.WRITE_CONTACTS"/>
<uses-permission android:name="android.permission.READ_CONTACTS" />