2010-02-03 13 views
10

के आधार पर एक छवि दृश्य स्रोत बदलना मैं एंड्रॉइड विकास (2 दिन पहले शुरू हुआ) के लिए काफी नया हूं और पहले से ही कई ट्यूटोरियल्स के माध्यम से रहा हूं। मैं एंड्रॉइड एसडीके में नोटपैड अभ्यास (Link to tutorial) से एक टेस्ट ऐप बना रहा हूं और नोट्स की सूची के हिस्से के रूप में मैं डेटाबेस फ़ील्ड की सामग्री के आधार पर एक अलग छवि प्रदर्शित करना चाहता हूं जिसे मैंने "नोट टाइप" कहा है। मैं इस नोट को प्रत्येक नोटपैड प्रविष्टि से पहले सूची दृश्य में दिखाना चाहता हूं।एंड्रॉइड: डेटाबेस फ़ील्ड डेटा

मेरी जावा फाइल में कोड है:

private void fillData() { 
    Cursor notesCursor = mDbHelper.fetchAllNotes(); 

    notesCursor = mDbHelper.fetchAllNotes(); 
    startManagingCursor(notesCursor); 

    String[] from = new String[]{NotesDbAdapter.KEY_NOTENAME, NotesDbAdapter.KEY_NOTETYPE}; 

    int[] to = new int[]{R.id.note_name, R.id.note_type}; 

    // Now create a simple cursor adapter and set it to display 
    SimpleCursorAdapter notes = 
      new SimpleCursorAdapter(this, R.layout.notes_row, notesCursor, from, to); 
    setListAdapter(notes); 
} 

और मेरे लेआउट xml फ़ाइल (notes_row.xml) इस तरह दिखता है:

<ImageView android:id="@+id/note_type" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:src="@drawable/default_note"/> 
<TextView android:id="@+id/note_name" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content"/> 

मैं सिर्फ सच में कोई सुराग नहीं मैं कैसे 'है चयनित नोट के प्रकार के आधार पर सही ड्रॉइंग लाने के बारे में जाना। फिलहाल मेरे पास स्पिनर से प्रकार का चयन करने की क्षमता है, इसलिए डेटाबेस में संग्रहीत किया जाता है एक पूर्णांक है। मैंने कुछ छवियां बनाई हैं जो इन पूर्णांक से मेल खाते हैं लेकिन यह चीजों को चुनने के लिए प्रतीत नहीं होता है।

किसी भी मदद की सराहना की जाएगी। अगर आपको अधिक जानकारी चाहिए तो कृपया मुझे बताएं।

उत्तर

24

आप व्यूबिंडर का उपयोग करने का प्रयास करना चाहेंगे। http://d.android.com/reference/android/widget/SimpleCursorAdapter.ViewBinder.html

इस उदाहरण की मदद करनी चाहिए:

private class MyViewBinder implements SimpleCursorAdapter.ViewBinder { 

    public boolean setViewValue(View view, Cursor cursor, int columnIndex) { 
     int viewId = view.getId(); 
     switch(viewId) { 
      case R.id.note_name: 

       TextView noteName = (TextView) view; 
       noteName.setText(Cursor.getString(columnIndex)); 

      break; 
      case R.id.note_type: 

       ImageView noteTypeIcon = (ImageView) view; 

       int noteType = cursor.getInteger(columnIndex); 
       switch(noteType) { 
        case 1: 
         noteTypeIcon.setImageResource(R.drawable.yourimage); 
        break; 
        case 2: 
         noteTypeIcon.setImageResource(R.drawable.yourimage); 
        break; 
        etc… 
       } 

      break; 
     } 
    } 

}

फिर

note.setViewBinder(new MyViewBinder()); 
+0

बहुत बढ़िया साथ अपने अनुकूलक में जोड़ने - सही काम करता है। एक आसान समाधान के लिए नहीं पूछा जा सका :)। आपका ईमानदारी से धन्यवाद है! – Butteredchops

+0

महान जवाब! धन्यवाद! –

+0

मैं यह जोड़ना चाहता हूं कि आपको ImageView के लिए 'setViewValue' में सभी मामलों को कवर करने की आवश्यकता नहीं है। अन्य सभी दृश्यों के लिए आपको केवल 'झूठी' वापस करनी चाहिए और इस मामले में एंड्रॉइड सामान्य बाध्यकारी लागू करेगा जिसे आपने SimpleCursorAdapter को प्रदान किया था। – damluar

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