2011-08-10 51 views
0

我有這個codesnippet,讓我從數據庫中取出KEY_COLOR,並把它放在R.id.text_color在XML附件..如何在Android中將數據庫字符串切換爲可繪製資源?

KEY_COLOR大氣壓等於「紅」,「藍」。 我不想要「紅色」和「藍色」我想要的圖像,而不是一個小點。

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

    // Create an array to specify the fields we want to display in the list (only TITLE) 

    String[] from = new String[]{NotesDbAdapter.KEY_TITLE, NotesDbAdapter.KEY_COLOR}; 

    // and an array of the fields we want to bind those fields to (in this case just text1) 

    int[] to = new int[]{R.id.text1, R.id.text_color}; 

    // 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); 

} 

我只是想NotesDbAdapter.KEY_COLOR的結果改變R.drawable.red_dot或blue_dot ......但我不能弄清楚如何加時賽...

你明白嗎? :/

+0

我將您的舊帳戶合併到您的舊帳戶中,以便您留下評論和編輯您的帖子。您可能會想要轉到您的[帳戶設置](http://stackoverflow.com/users/889771/user889771)並更新合併中更改的任何內容。 –

回答

0

使用相同的fillData,你有。

但是,在將數據插入到數據庫中時,需要將數據庫的URI與列名NotesDbAdapter.KEY_COLOR一起使用。

對於下面的示例代碼,將圖像更改爲您的繪圖,如果其藍色或紅色。

String nameToInsert = "android.resource://my.package.name/"+R.drawable.image; 

當然,將my.package.name更改爲正確的包名稱。

只要讓R.id.text_color成爲imageview的id而不是textview。

+0

這使得契約......看起來像一個糟糕的解決方法,但現在的作品! – DreamHawk

+0

不知道它的pad,我想你只是需要一個適當的URI來顯示drawable。 –

0

從文檔爲SimpleCursorAdapter ...

綁定發生在兩個階段。首先,如果SimpleCursorAdapter.ViewBinder可用,則調用setViewValue(android.view.View,android.database.Cursor,int)。如果返回值爲true,則發生綁定。如果返回值爲false,並且綁定視圖是TextView,則調用setViewText(TextView,String)。 如果返回值爲false並且要綁定的視圖是ImageView,則調用setViewImage(ImageView,String)。

從文檔的SimpleCursorAdapter.setViewImage (ImageView v, String value) ...

默認情況下,該值將被視爲一個圖像資源。 如果該值不能用作圖像資源,則該值將用作圖像Uri。

所以基本上,如果你把它使你的數據庫的KEY_COLOR列包含Uri s到您的圖片,並在您to陣列具有的ImageView的資源ID替換R.id.text_color,在理論上你SimpleCursorAdapter會自動補ImageView圖像從Uri解析。

從來沒有嘗試過,但它似乎應該如何工作。

編輯查看如何在列表行一個TextView ... Fancy ListViews Part One使用圖像這個例子。它由馬克墨菲(又名CommonsWare)在SO上撰寫。它實際上使用了一種不同的方法來創建視圖聯編程序,並使用getView(...)方法爲每一行設置圖像和文本。

+0

非常感謝,但我不明白...你的意思是我應該改變「紅色」和「藍色」爲「R.drawable.red_dot」等等,然後......? :S有一些代碼示例?謝謝 – DreamHawk

+0

@ user889771:請參閱上面我的答案結尾的編輯。 – Squonk

相關問題