2011-11-17 6 views
8

Tengo 5 casillas de verificación y tengo que seleccionar varias casillas de verificación.Adjuntar con StringBuilder

hice un código como este para comprobar casilla de verificación está marcada:

sports=(CheckBox)findViewById(R.id.sports_btn); 
sports.setOnClickListener(new OnClickListener() { 

    @Override 
    public void onClick(View v) { 
     if (sports.isChecked() == true) 
     list.add("4"); 
    } 
}); 

añado un valor a una lista de arreglo:

list ArrayList<String> list = new ArrayList<String>(); 

y estoy recuperando el valor como cadena como esto:

StringBuilder sb = new StringBuilder(); 
for(int i =0; i < list.size(); i++) 
{ 
    for (String str: list) 
    { 
     sb.append(str.toString()); 
     sb.append(","); 
    } 

} 
String sel_cat = sb; 

me estoy haciendo la cadena, pero si se seleccionan dos valores que viene como 2,3, ¿Cómo eliminar esa última coma? No quiero la última coma que la cuerda tiene que ser como 2,3.

+1

en mi humilde opinión son siempre mejor usar código ya escrito y probado y luego rodando la nuestra, por lo tanto, mi recomendación de utilizar la biblioteca opensource apache string util –

Respuesta

18
StringBuilder sb = new StringBuilder(); 
sb.deleteCharAt(sb.length()-1) 

O en su código, utilice

StringBuilder sb = new StringBuilder(); 

for(int i =0;i<list.size();i++) 
{ 
    String prefix = ""; 
    for (String str : list) 
    { 
     sb.append(prefix); 
     prefix = ","; 
     sb.append(str); 
    } 
} 

String sel_cat = sb; 
+0

'StringBuilder' tiene un método llamado' deleteCharAt' ... – MByD

+0

Cancela mi ofvota por la razón de que no entiendo por qué 'str.toString()' se usa en la llamada 'append()'. ¿No es eso ya un 'String'? Además, será la última línea; 'Cadena sel_cat = sb;' compilar? –

5

Usted puede poner la condición de verificar:

for (String str : list) 
{ 
    sb.append(str.toString()); 
    if (i!=list.size()-1) 
    { 
    sb.append(","); 
    } 
} 
+0

Ese fue mi primer movimiento también, pero requiere una condición en cada iteración. – MByD

1

Puede utilizar deleteCharAt:

StringBuilder sb = new StringBuilder(); 
for(int i =0;i<list.size();i++) 
{ 
    for (String str : list) 
    { 
     sb.append(str); // str is already a String, no need for toString() 
     sb.append(","); 
    } 
} 
if (sb.length() > 0) { 
    sb.deleteCharAt(sb.length()-1); 
} 
String sel_cat=sb; 
3

Usted puede poner su matriz de cadenas de condición:

String list[]=new String[]{"A","C","D","F"}; 

public String print(String arr[]){ 

    StringBuilder sb = new StringBuilder(); 
    String prefix = ""; 
    for (String str : arr) 
    { 
     sb.append(prefix); 
     prefix = ","; 
     sb.append(str); 
    } 

    System.out.println("WithCommas"+sb); 
    return sb; 
} 
-1
import android.app.DatePickerDialog; 
import android.app.TimePickerDialog; 
import android.os.Bundle; 
import android.support.v7.app.AppCompatActivity; 
import android.view.View; 
import android.widget.DatePicker; 
import android.widget.EditText; 
import android.widget.ImageButton; 
import android.widget.ScrollView; 
import android.widget.TimePicker; 
+0

Hola, bienvenido a StackOverflow. Por favor, no solo descargue el código como su respuesta, explique lo que está haciendo para que la gente pueda entender cómo resolver el problema. Gracias. – Cthulhu