我想要使用姓名访问电话号码。但是当我这样做时,我的呼叫与我选择的号码不匹配。我有一个列表视图,其中有一个复选框。用户选择名称,这些名称转到第二个活动我在第一个活动中选择的数字和名称是第二个活动的问题。当我打电话给任何名字时,我的应用程序正在拨打不同的号码。我该如何解决?
ArrayList<String> listte = new ArrayList<String>();
ArrayList<String> selectedlist = new ArrayList<>();
ListView chosinglist;
Button kaydet;
ArrayList<String> listtearama = new ArrayList<>();
ArrayList<String> selectedlistarama = new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
chosinglist = (ListView) findViewById(R.id.chosing);
chosinglist.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
getNumber(this.getContentResolver());
}
private void getNumber(ContentResolver contentResolver) {
Cursor phones = contentResolver.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, null, null, null);
while (phones.moveToNext()) {
String name = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
String phonenumber = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
System.out.println(".................." + phonenumber);
if (!listte.contains(name)){ // it doesn"t work.But if It doesn"t exist, listview is repeating yourself.
listte.add(name);
}
if (!listtearama.contains(phonenumber)){// it doesn"t work.But if It doesn"t exist, listview is repeating yourself.
listtearama.add(phonenumber); }
}
phones.close();// close cursor
final ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.checkrow,
R.id.checkedTextView2, listte);
chosinglist.setAdapter(adapter);
chosinglist.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
String selecteditem = (String) parent.getAdapter().getItem(position);
int arkaplandakinumaraposition = parent.getPositionForView(view);
String aramakicinliste = listtearama.get(arkaplandakinumaraposition);
if (selectedlistarama.contains(aramakicinliste)) {
selectedlistarama.remove(aramakicinliste);
} else
selectedlistarama.add(aramakicinliste);
if (selectedlist.contains(selecteditem)) {
selectedlist.remove(selecteditem);
} else selectedlist.add(selecteditem);
答案 0 :(得分:0)
ArrayList<String> listte = new ArrayList<String>();
ArrayList<String> selectedlist = new ArrayList<>();
ListView chosinglist;
Button kaydet;
ArrayList<String> listtearama = new ArrayList<>();
ArrayList<String> selectedlistarama = new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
chosinglist = (ListView) findViewById(R.id.chosing);
chosinglist.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
getNumber(this.getContentResolver());
}
private void getNumber(ContentResolver contentResolver) {
Cursor phones = contentResolver.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, null, null, null);
//first of all, check if the cursor has data
if (phones != null && phones.getCount() > 0) {
//move to the first element, the cursor might be at an invalid location
phones.moveToFirst();
do {
String name = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
String phonenumber = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
System.out.println(".................." + phonenumber);
if (!listte.contains(name)) { // it doesn"t work.But It doesn"t exist listview repeating yourself.
listte.add(name);
}
if (!listtearama.contains(phonenumber)) {// it doesn"t work.But It doesn"t exist listview repeating yourself.
listtearama.add(phonenumber);
}
} while (phones.moveToNext());
phones.close();// close cursor
}
final ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.checkrow,
R.id.checkedTextView2, listte);
chosinglist.setAdapter(adapter);
chosinglist.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
String selecteditem = (String) parent.getAdapter().getItem(position);
//int arkaplandakinumaraposition = parent.getPositionForView(view); irrelevant to me
String aramakicinliste = listtearama.get(position);
if (selectedlistarama.contains(aramakicinliste)) {
selectedlistarama.remove(aramakicinliste);
} else
selectedlistarama.add(aramakicinliste);
if (selectedlist.contains(selecteditem)) {
selectedlist.remove(selecteditem);
} else selectedlist.add(selecteditem);
}
});
}
/*From what I see, it seems you rather need to implement multiple selection because the checkbox
* has an onclick event of its own which is different from the one for the entire list item*/
此更新的答案可确保所选项目正确无误,您传输数据的实施将成为现在的决定因素。