2011-11-17 12 views
8

के साथ संलग्न मेरे पास 5 चेकबॉक्स हैं और मुझे एकाधिक चेकबॉक्स चुनना है।स्ट्रिंगबिल्डर

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

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

मैं एक सरणी सूची में मान जोड़ने के लिए कर रहा हूँ:

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

और मैं जैसे स्ट्रिंग के रूप में मूल्य को पुन: प्राप्त कर रहा हूँ

मैं इस तरह के कोड की जाँच करने के लिए चेक बॉक्स को चेक किया बनाया यह:

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; 

मुझे स्ट्रिंग मिल रही है लेकिन यदि दो मान चुने गए हैं तो यह 2,3,जैसा आ रहा हैउस अंतिम कॉमा को कैसे हटाएं? मैं नहीं चाहता कि आखिरी कॉमा स्ट्रिंग 2,3 की तरह हो।

+1

imho आप हमेशा पहले से ही लिखा और फिर रोलिंग y परीक्षण किया कोड का उपयोग कर बेहतर होगा हमारी खुद की इसलिए ओपनसोर्स अपाचे स्ट्रिंग यूज लाइब्रेरी –

उत्तर

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

या अपने कोड में, का उपयोग

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

'स्ट्रिंगबिल्डर' में 'deleteCharAt'' नामक एक विधि है ... – MByD

+0

इस कारण के लिए मेरा ओवरवॉव रद्द कर दिया गया है कि मुझे समझ में नहीं आता कि 'str.toString()' को 'append()' कॉल में क्यों उपयोग किया जाता है। क्या वह पहले से ही 'स्ट्रिंग' नहीं है? इसके अलावा, आखिरी पंक्ति होगी; 'स्ट्रिंग sel_cat = एसबी; 'संकलन? –

5

आपको यह देखना होगा शर्त रख सकते हैं:

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

का उपयोग करने की मेरी सिफारिश यह मेरा पहला कदम भी था, लेकिन इसे प्रत्येक पुनरावृत्ति में एक शर्त की आवश्यकता होती है। – MByD

1

आप उपयोग कर सकते हैं 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; 
0

एक और विकल्प StringUtils#join(Object\[\], String, int, int) को देखने के लिए है:

एक तरीका है जिसके एक सरणी लेते हैं और इसे एक साथ रखा एक delimeter साथ कर सकते हैं में शामिल होने नहीं है ...

पूर्व:

StringUtils.join([null, "", "a"], ',') // creates... ",,a" 
3

आप में अपने स्ट्रिंग सरणी डाल सकते हैं हालत:

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

हाय, StackOverflow में आपका स्वागत है। कृपया कोड को अपने उत्तर के रूप में न केवल डंप करें, समझाएं कि आप क्या कर रहे हैं ताकि लोग समझ सकें कि समस्या को कैसे हल किया जाए। धन्यवाद। – Cthulhu

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^