2017-08-29 37 views
1

我想访问带有名称的电话号码。但是当我这样做时,我的通话不符合我选择的号码。我有一个带有复选框的列表视图。用户的选择名称并且这些名字转到次数第二个活动。我的问题是第二个活动中的数字和名字选择在第一个活动。当我打电话给任何名字,我的应用程序调用不同的数字。我可以如何解决它?联系人名称不匹配在列表视图中的数字

 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); 

enter image description here

+0

为您的问题添加一个android,java标签,以供更多人表现出兴趣。此外,你的代码不是很具描述性,所以你很难掌握你在做什么,尝试使用描述性变量名称或评论 –

+0

好的我添加了android标签。 –

+0

ok.I编辑我的codo一点点。如果你是thinging.just说 –

回答

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*/ 

此更新后的答案可以确保所选择的项目是正确的,你的传送数据的实施将是现在的决定因素。

+0

它不工作。程序仍然调用不同的数字 –

+0

看起来你是点击复选框,而不是实际列表项目,我会尽快写下你想要做的事情的完整实现,以便你可以进行比较。 –

相关问题