Ho iniziato di recente la programmazione in Android e Java in generale, quindi per favore portami con me.Il ciclo non cattura i duplicati e li rimuove in Android (Java)
Ho scritto un ciclo che dovrebbe, prima di aggiungere un nuovo nome e numero di telefono a un elenco e un array nascosto, rimuovere eventuali duplicati trovati in precedenza. Usando i metodi attuali ho ancora ripetizioni costanti, e quando clicco sul pulsante per aggiungere di nuovo tutti gli stessi contatti, ottengo di nuovo tutti i contatti. Questo mi fa pensare il metodo di controllo duplicato non funziona correttamente a tutti, ma Im non ottenere alcun erori per aiutare
Ho due array lista che ho creato al di fuori:
List<String> phnnumbers = new ArrayList<String>();
List<String> names = new ArrayList<String>();
Questo è i contatti Aggiunta metodo:
public void AddAllContacts(View view) {
try {
Cursor phones = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, null, null, null);
while (phones.moveToNext()) {
String linesp = System.getProperty("line.separator");
TextView quantityTextView = (TextView) findViewById(R.id.numbersview);
String name = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
String phoneNumber = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
duplicatecheck(name, phoneNumber);
addthistothelist(name, phoneNumber);
}
phones.close();
}
catch (Exception e){
e.printStackTrace();
}
}
Questo è il metodo di controllo duplicato:
public void duplicatecheck(String name,String phoneNumber) {
for (int i=0;i<phnnumbers.size();i++) {
String thenumber = phnnumbers.get(i);
String thename= names.get(i);
if(thenumber.equals(phoneNumber)) {
phnnumbers.remove(i);
names.remove(i);
TextView quantityTextView = (TextView) findViewById(R.id.numbersview);
String textpost = quantityTextView.getText().toString();
String newtextpost = textpost.replaceAll(thenumber, "UNBELIEVABLEEE");
String secondtextpost = newtextpost.replaceAll(thename, "UNBELIEVABLE");
quantityTextView.setText(secondtextpost);
NumberOfContactsAdded--;
}
}
}
Questo è il metodo che viene chiamato dopo che dovrebbe controllare i duplicati e rimuovere, questa metodo successivo è quello di aggiungere il numero e il nome successivo:
public void addthistothelist(String nameofperson,String NumberOfPerson) {
String linesp = System.getProperty("line.separator");
TextView quantityTextView = (TextView) findViewById(R.id.numbersview);
String textpost = quantityTextView.getText().toString();
NumberOfPerson = NumberOfPerson.replaceAll("[^0-9]", "");
if(NumberOfPerson.contains("+1")) {
phnnumbers.add(NumberOfPerson);
names.add(nameofperson);
NumberOfContactsAdded++;
quantityTextView.append(linesp+nameofperson+" " +NumberOfPerson);
} else {
NumberOfPerson= "+1"+NumberOfPerson;
phnnumbers.add(NumberOfPerson);
names.add(nameofperson);
NumberOfContactsAdded++;
quantityTextView.append(linesp+nameofperson+" " +NumberOfPerson);
}
}
Im davvero perso su quello che ho potuto fare male. Vorrei provare a ripulire questo codice ma non funziona nemmeno correttamente per me per pulirlo.
Okay che ha senso. Come potrei prendere il nome e il numero di telefono di ciascuna persona in una stringa diversa? Sto cercando di farli scorrere tra loro in base alle dimensioni di Hashset. Dal momento che userò un comando che ha bisogno del loro nome e numero separati. Non posso usare person.name o person.phoneNumber in un altro metodo –
Una volta ottenuto il set di persone, allora iterate questo insieme, ottenete ogni oggetto Person e poi assegnate questo oggetto Person a un altro metodo. –
Mi dispiace Non sono sicuro di come lo farei? 'Iterator it = hset.iterator(); while (it.hasNext()) { System.out.println (it.next()); } Questo è il modo per iterare, ma come potrei darlo a un altro metodo o cambiarlo in un tipo diverso? –