2012-12-16 10 views
5

मैं अपने स्विमिंग प्रदर्शन डेटाबेस से पुनर्प्राप्त करता हूं। मैं अपने मूल्य के अनुसार एक फ़ील्ड के पृष्ठभूमि रंग को बदलना चाहता हूं। उदाहरण के लिए यदि मैं 4 गोद तैरता हूं तो मुझे रंग पृष्ठभूमि चाहिए। मैं इस कोड को आज़माता हूं जो पृष्ठभूमि को सही ढंग से सेट करता है लेकिन टेक्स्ट गायब हो जाता है।एंड्रॉइड - SimpleCursorAdapter.ViewBinder - पृष्ठभूमि रंग सेट करें

 String[] columns = new String[] { "swimm_pos", "swimm_date","swimm_lap", "swimm_stroke", "swimm_time", "swimm_media", "swimm_efficiency", "swimm_note" }; 
     int[] to = new int[] { R.id.row_counter, R.id.swimm_date, R.id.swimm_lap, R.id.swimm_stroke, R.id.swimm_time, R.id.swimm_medialap, R.id.swimm_efficiency, R.id.swimm_note}; 

     SimpleCursorAdapter adapter = new SimpleCursorAdapter(
      this, 
      R.layout.contacto_list_item, 
      cursor, 
      columns, 
      to); 

     adapter.setViewBinder(new SimpleCursorAdapter.ViewBinder() { 
      public boolean setViewValue(View view, Cursor cursor, int columnIndex) { 
       if (view.getId() == R.id.swimm_lap) 
       { 
        int color = cursor.getInt(columnIndex); 
        String s = String.valueOf(color); 
        if (s.equals("4")) { 
        TextView tv = (TextView)view; 
        tv.setBackgroundColor(0xFF558866);} 
       return true; 

      } 
       return false;} 

     }); 

और जब गोद मेरी कोड में उदाहरण के लिए, एक और क्षेत्र के 4 सेट पृष्ठभूमि रंग के बराबर है भी संभव है,: R.id.swimm_pos? धन्यवाद।

उत्तर

3

व्यूबिंडर से सच लौटने का तात्पर्य यह है कि आप दृश्य को डेटा बाध्य कर रहे हैं।

लेकिन आपके मामले में आप R.id.swimm_lap का पाठ सेट नहीं कर रहे हैं।

तो वापसी कथन

tv.setText(s); 
return true; 

संपादित पहले setText जोड़ें: दूसरे प्रश्न के लिए आप तो जोड़ने

else if (view.getId() == R.id.row_counter){ 
int color = cursor.getString(cursor.getColumnIndex("swimm_lap")); 
if (s.equals("4")) { 
    view.setBackgroundColor(0xFF558866); 
} 
} 
+0

धन्यवाद, बिल्कुल सही। और दूसरे प्रश्न के लिए कुछ जोड़ने के लिए संभव है: TextView tv = (TextView) findViewById (R.modificacontatto.edswimm_pos); – lucignolo

+0

मैंने जवाब संपादित किया, मुझे लगता है कि अगर आप रंग बदल रहे हैं, तो आप पाठ को सेट करने के बजाय झूठी वापसी कर सकते हैं, लेकिन यदि यह काम नहीं करता है, तो आपको पाठ को भी सेट करना होगा – nandeesh

0

हल तैरना गोद पर निर्भर करता है R.id.row_counter की पृष्ठभूमि बदलना चाहते हैं लगता है , यहां सही कोड:

  adapter.setViewBinder(new SimpleCursorAdapter.ViewBinder() { 
      public boolean setViewValue(View view, Cursor cursor, int columnIndex) { 
       if (view.getId() == R.id.row_counter) 
       { 
        int color = cursor.getInt(cursor.getColumnIndex("swimm_lap")); 
        String s = String.valueOf(color); 
        if (s.equals("4")) { 
        TextView tv = (TextView)view; 
        tv.setBackgroundColor(0xFF558866); 
           } 
       return true; 
      } 
       return false;} 
     }); 
    this.setListAdapter(adapter); 
    datasource.close(); 
} 
+0

हल किया गया, सही कोड यहां: – lucignolo

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

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