2012-09-12 6 views
-1

Je suis en train de créer une application pour Android. dans lequel, à un moment donné, j'ai besoin d'ouvrir une activité, j'ai besoin d'afficher tous les contacts sur le téléphone de l'utilisateur dans un listview avec checkbox, de sorte que plusieurs contacts peuvent être sélectionnés. J'ai écrit un code qui affiche actuellement la liste de tous les contacts mais sans checkbox comme vous pouvez le voir dans l'image ci-jointe. Ensuite, lorsque l'utilisateur sélectionne les contacts nécessaires à l'aide checkbox et clicks on DONE button le résultat devrait être dérivé de l'activité principale et tous les contacts que l'utilisateur sélectionné doit être affiché dans le EditText comme celui-ci Frank <+911234567890>, John <+913456789012>, Ashley <+911237890456>,. Comment puis-je réaliser ce que je veux? Et aussi les tirets (-) qui sont actuellement affichés devraient également disparaître.en sélectionnant plusieurs contacts en utilisant la case à cocher

enter image description here

+0

double possible de [obtenir des détails de contact sélectionné de la vue de la liste] (http://stackoverflow.com/questions/12338160/get-details-of-contact-selected-from-list -view) – Luksprog

+0

@Luksprog ce n'est pas un doublon de toute façon. Si vous ne pouvez pas aider alors vous devriez mieux rester à l'écart. –

Répondre

1

Utilisez ce qui suit pour ajouter des cases à cocher sur tous les points:

listView.setChoiceMode(CHOICE_MODE_MULTIPLE); 

ce que ce non seulement ajouter des cases à cocher à tous les articles, mais il se chargera de tous les états cocher pour vous. Vous disposez de plusieurs méthodes que vous pouvez utiliser pour obtenir l'état des éléments:

getCheckedItemCount()
getCheckedItemIds()
getCheckedItemPositions()

Et vous pouvez utiliser setItemChecked() pour définir l'état vérifié par programmation de tout élément. Jetez un oeil à this tutorial pour un guide comment faire une liste de sélection multiple.

+0

Comment puis-je supprimer les tirets (-) lorsque je récupère un nombre dans une chaîne? –

1

diviser la chaîne sur chaque '-' en utilisant la fonction split ("-") et concaténer il.

0

Utilisez l'extrait de code ci-dessous pour récupérer tous les contacts du répertoire, ajoutez-les dans une liste ListView contenant des cases à cocher pour activer la sélection multiple ,, elle est claire et directe au point.

public class Display extends Activity implements OnItemClickListener{ 

List<String> name1 = new ArrayList<String>(); 
List<String> phno1 = new ArrayList<String>(); 
MyAdapter ma ; 
Button select; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.display); 

    getAllContacts(this.getContentResolver()); 
    ListView lv= (ListView) findViewById(R.id.lv); 
     ma = new MyAdapter(); 
     lv.setAdapter(ma); 
     lv.setOnItemClickListener(this); 
     lv.setItemsCanFocus(false); 
     lv.setTextFilterEnabled(true); 
     // adding 
     select = (Button) findViewById(R.id.button1); 
    select.setOnClickListener(new OnClickListener() 
    { 

     @Override 
     public void onClick(View v) { 
       StringBuilder checkedcontacts= new StringBuilder(); 

      for(int i = 0; i < name1.size(); i++) 

       { 
       if(ma.mCheckStates.get(i)==true) 
       { 
        checkedcontacts.append(name1.get(i).toString()); 
        checkedcontacts.append("\n"); 

       } 
       else 
       { 

       } 


      } 

      Toast.makeText(Display.this, checkedcontacts,1000).show(); 
     }  
    }); 


} 
@Override 
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) { 
    // TODO Auto-generated method stub 
    ma.toggle(arg2); 
} 

public void getAllContacts(ContentResolver cr) { 

    Cursor phones = cr.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)); 
     name1.add(name); 
     phno1.add(phoneNumber); 
    } 

    phones.close(); 
} 
class MyAdapter extends BaseAdapter implements CompoundButton.OnCheckedChangeListener 
{ private SparseBooleanArray mCheckStates; 
    LayoutInflater mInflater; 
    TextView tv1,tv; 
    CheckBox cb; 
    MyAdapter() 
    { 
     mCheckStates = new SparseBooleanArray(name1.size()); 
     mInflater = (LayoutInflater)Display.this.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    } 
    @Override 
    public int getCount() { 
     // TODO Auto-generated method stub 
     return name1.size(); 
    } 

    @Override 
    public Object getItem(int position) { 

     return position; 
    } 

    @Override 
    public long getItemId(int position) { 
     // TODO Auto-generated method stub 

     return 0; 
    } 

    @Override 
    public View getView(final int position, View convertView, ViewGroup parent) { 
     // TODO Auto-generated method stub 
     View vi=convertView; 
     if(convertView==null) 
     vi = mInflater.inflate(R.layout.row, null); 
     tv= (TextView) vi.findViewById(R.id.textView1); 
     tv1= (TextView) vi.findViewById(R.id.textView2); 
     cb = (CheckBox) vi.findViewById(R.id.checkBox1); 
     tv.setText("Name :"+ name1.get(position)); 
     tv1.setText("Phone No :"+ phno1.get(position)); 
     cb.setTag(position); 
     cb.setChecked(mCheckStates.get(position, false)); 
     cb.setOnCheckedChangeListener(this); 

     return vi; 
    } 
    public boolean isChecked(int position) { 
      return mCheckStates.get(position, false); 
     } 

     public void setChecked(int position, boolean isChecked) { 
      mCheckStates.put(position, isChecked); 
     } 

     public void toggle(int position) { 
      setChecked(position, !isChecked(position)); 
     } 
    @Override 
    public void onCheckedChanged(CompoundButton buttonView, 
      boolean isChecked) { 
     // TODO Auto-generated method stub 

     mCheckStates.put((Integer) buttonView.getTag(), isChecked);   
    } 
} 

}

Questions connexes