2010-01-16 15 views
5

मुझे टेक्स्ट '[email protected]' पाठ मिल रहा है एक स्पिनर से हटा दिया गया .getSelectedItem()। ToString() कॉल। मुझे यकीन नहीं है क्यों। स्पिनर एक SimpleCursorAdapter से जुड़ा हुआ है।[email protected]

यहाँ कोड

cCategories = (Cursor) myAdapter.getAllCategories(); 
    this.startManagingCursor(cCategories); 

    SimpleCursorAdapter scaCategories = new SimpleCursorAdapter(this, R.layout.track_category_item,cCategories,new String[] {DBAdapter.KEY_CATEGORIES_NAME},new int[]{R.id.text1}); 
    scaCategories.setDropDownViewResource(R.layout.track_category_dropdown_item); 
    mCatSpinner = (Spinner) findViewById(R.id.thecategory); 
    mCatSpinner.setAdapter(scaCategories); 

    if(mCatSpinner.isSelected() != true) { 
     mCatSpinner.setSelection(0); 
    } 

व एक्सएमएल track_category_item.xml है

<TextView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/text1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="@android:id/text1" 
    style="?android:attr/spinnerItemStyle" 
    android:ellipsize="marquee" 
    android:singleLine="true"> 
</TextView> 

track_category_dropdown_item.xml

<CheckedTextView xmlns:android="http://schemas.android.com/apk/res/android"   
    android:id="@+id/text1" 
    style="?android:attr/spinnerDropDownItemStyle" 
    android:singleLine="true" 
    android:layout_width="fill_parent" 
    android:layout_height="?android:attr/listPreferredItemHeight" 
    android:ellipsize="marquee" /> 

स्पिनर एक्सएमएल इस

तरह लग रहा है
<Spinner 
    android:id="@+id/thecategory" 
    android:prompt="@string/SELECT_CATEGORY" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_x="15px" 
    android:layout_y="133px" > 
</Spinner> 

और कर्सर लौटाए जाने स्पिनर को ठीक से काम करने के लिए प्रकट

public Cursor getAllCategories() 
{ 
    return db.query(DATABASE_CATEGORIES_TABLE, new String[] { 
      KEY_CATEGORIES_ROWID, 
      KEY_CATEGORIES_NAME, 
      KEY_CATEGORIES_DEFAULT}, 
      null, 
      null, 
      null, 
      null, 
      null); 
} 

है। जब मैं इसे सहेजने का प्रयास करता हूं तो spinner.getSelectedItem()। ToString() का उपयोग करके चयनित आइटम के मान के रूप में पारित किया जाता है।

कोई भी यहां कुछ भी गलत तरीके से गलत देखता है। पता नहीं कि क्या करना है।

धन्यवाद पैट्रिक

+0

यह एक ArrayAdapter के साथ सही ढंग से काम कर रहा था। तब दिया गया मूल्य श्रेणी (या तो व्यवसाय, या व्यक्तिगत) का पाठ था। क्या तथ्य यह है कि मैं एक सरल कर्सर एडाप्टर का उपयोग कर रहा हूं, यह मानता है कि मूल्य कैसे पारित किया जाता है? – bugzy

उत्तर

6

आपका कूट चल रहा है के रूप में आप यह लिखा था। Spinner एक AdapterView है। एडाप्टर जिसे आपने कनेक्ट किया है वह SimpleCursorAdapter है। इसका मतलब है कि चयनित आइटम Cursor है (उपयोगकर्ता की पसंद के अनुरूप कर्सर के परिणाम सेट में आइटम पर स्थित है)। Cursor में toString() का डिफ़ॉल्ट कार्यान्वयन है, जो [email protected] जैसा कुछ देता है।

चूंकि आपने हमें यह नहीं बताया कि आप क्या करने का प्रयास कर रहे हैं, तो आपको सटीक रूप से सलाह देना असंभव है। जो कुछ भी आप सहेजना चाहते हैं, उसे Cursor से निकाला जाना चाहिए, आपको getSelectedItem() से मिलता है।

+0

धन्यवाद कॉमन्सवेयर, मुझे लगता है कि आपने मेरे प्रश्न का उत्तर दिया होगा। मैं बस चयनित आइटम का मूल्य लेने की कोशिश कर रहा हूं, और इसे डेटाबेस तालिका में सहेज रहा हूं। शुरुआत में मैं स्पिनर को पॉप्युलेट करने के लिए एक ऐरेएडाप्टर का उपयोग कर रहा था। सरणी कुछ श्रेणियों ("व्यवसाय", "व्यक्तिगत") के साथ एक एकल तत्व सरणी थी। यह एक स्ट्रिंग के रूप में काम किया गया था पारित किया गया था। तो आपकी कहानियां मुझे पारित स्पिनर के आधार पर कर्सर से वास्तविक श्रेणी नाम का पता लगाने के लिए कुछ अतिरिक्त कोडिंग करने की आवश्यकता होगी .getSelectedItemPosition()? धन्यवाद पैट्रिक – bugzy

+0

हां। अपनी 'क्वेरी() 'को देखते हुए, आपको दूसरे कर्सर को वापस पाने के लिए' कर्सर 'पर' getString (1) 'को कॉल करने की आवश्यकता होगी ... मान लीजिए कि' KEY_CATEGORIES_NAME' वह मान है जिसे आप चाहते हैं। – CommonsWare

1

मुझे आपके संदर्भ को पढ़ने पर परेशान किया जा सकता है, लेकिन बस संक्षेप में मदद करना चाहता था। मेरे पास DbHelper.KEY_COL के नाम पर एक कॉलम है, और मैं एक विशिष्ट पंक्ति पर DbHelper.KEY_COL मान पुनर्प्राप्त कर रहा हूं। शायद मेरे कुछ कोड में मदद मिलेगी:

Cursor colCur=(Cursor)spCols.getSelectedItem(); 
String col=colCur.getString(colCur.getColumnIndex(DbHelper.KEY_COL)); 
संबंधित मुद्दे