2010-11-03 10 views
6

दोस्तों,एंड्रॉइड एकल पसंद सूची चयन समस्या?

मैं रेडियो बटन साथ सूची प्रदर्शित करने के लिए निम्न कोड का उपयोग कर रहा अब मैं डिफ़ॉल्ट रूप से सूची के विशिष्ट रेडियो बटन का चयन करने के लिए इतना setSelection संपत्ति जो काम नहीं करता है का उपयोग कर चाहते हैं।

final String [] items=new String[]{"Item1","Item2","Item3","Item4"}; 
      ArrayAdapter<string> ad=new ArrayAdapter<string>(this,android.R.layout.simple_list_item_single_choice,items); 
      list=(ListView)findViewById(R.id.List); 
      list.setAdapter(ad); 

list.setChoiceMode(ListView.CHOICE_MODE_SINGLE); 
list.setSelection(2); 
    list.setOnItemClickListener(new OnItemClickListener() 
      { 

     public void onItemClick(AdapterView arg0, View arg1, int arg2, 
     long arg3) { 
     // TODO Auto-generated method stub 
     TextView txt=(TextView)findViewById(R.id.txt); 
     txt.setText(list.getItemAtPosition(arg2).toString()); 


     } 

      } 
      ); 

कृपया गाइड करें कि मैं क्या गलती कर रहा हूं?

उत्तर

6

मैं पूरी तरह से बंद हो सकता हूं, लेकिन मुझे लगता है कि सेट चयन आपके आइटम (चेकबॉक्स या रेडियो में) की जांच नहीं करता है, हालांकि यह इसके लिए नेविगेट करता है।

एक कामकाज के रूप में (शायद एक और अधिक सुरुचिपूर्ण समाधान है) आप ArrayAdapter का विस्तार कर सकते हैं और getView() विधि में मैन्युअल रूप से चेक सेट कर सकते हैं।

को अपनी कक्षा में कुछ इस तरह करें:

private static class MArrayAdapter extends ArrayAdapter<String> { 
    public Adapter(final Context context, final String[] objects) { 
     super(context, android.R.layout.simple_list_item_single_choice, objects); 
    } 

    @Override 
    public View getView(final int position, final View convertView, final ViewGroup parent) { 
     final CheckedTextView view = (CheckedTextView) super.getView(position, convertView, parent); 
     view.setChecked(position == 2); 
     return view; 
    } 

} 

और करने के लिए new MArrayAdapter(this, items);

पी.एस. एक एडाप्टर होने का अपना रास्ता बदल मेरी पिछली टिप्पणी पर, मेरी गलती, आप बेहतर विकल्प सेट चॉइसमोड (यह सिर्फ मेरे ऐप में है, मैं अधिसूचना कॉल करता हूंडेटासेट चेंज किया गया है, इसलिए मुझे इसकी ज़रूरत नहीं है)। मुझे लगता है कि आप पसंद मोड के बिना कुछ अजीब व्यवहार तक हैं।

31

You'r की तलाश:

list.setItemChecked(2, true); 
+0

बिंगो! यही वही था जो मुझे अपने मामले में चाहिए था। असल में, मैं दोनों सेट इटैम चेक (इसे जांचने के लिए) और सेट चयन (आइटम को देखने के लिए) को कॉल करना चाहता हूं। –

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