spara bilder i databas

Diskussion i 'Frågor, support och diskussion' startad av mardox, 4 dec 2010.

  1. mardox

    mardox Kid Droid Medlem

    Blev medlem:
    31 jan 2010
    Inlägg:
    73
    Mottagna gillanden:
    6

    MINA ENHETER

    Hej,

    Troligen ett rätt enkelt problem men fortfarande ett problem. sökt runt lite på google men många tutorials säger olika saker och de förklarar inte så oehört bra.

    det jag ska göra helt enkelt är att spara en bild i en databas och sedan sätta den bild som tillhör respektive rad in i en listview.

    här kommer den kod jag har hitills. det jag använder just nu är Uri

    Kod:
    //FRÅN MIN DATABAS KLASS
    public long createDate(String date) {
            ContentValues initialValues1 = new ContentValues();
            //test
            Uri imgUri=Uri.parse("android.resource://com.notesproject.dictanotes/"+R.drawable.list_icon);
            initialValues1.put(KEY_DATE, date);
            initialValues1.put(KEY_TIME, "00:00");
            initialValues1.put(KEY_DICTTAG, "");
            initialValues1.put(KEY_DICTALARMTIME, "0");
            //test
            initialValues1.put(KEY_DICTIMAGEURI, imgUri.getPath());
            return mdiktationsDb.insert(DATABASE_TABLE, null, initialValues1);
        }
    
        public Cursor fetchAllDatesById() {
        	//test med imageuri
        	return mdiktationsDb.rawQuery("SELECT " + KEY_DATEID + "," +
        			" " + KEY_DATE + "," + " " + KEY_TIME + "," + " " + KEY_DICTTAG  + "," + " " + KEY_IMAGEURI + " FROM " + DATABASE_TABLE + " ORDER BY " + KEY_DATEID + " DESC", null);
        }
    
    
    //FRÅN MIN LISTACTIVITY KLASS
    
    	datesCursor = mdiktationsDbHelper.fetchAllDatesById();
        			startManagingCursor(datesCursor);
    			
        		String[] from = new String[]{diktationdatesDbAdapter.KEY_DATE,diktationdatesDbAdapter.KEY_TIME,diktationdatesDbAdapter.KEY_DICTTAG,diktationdatesDbAdapter.KEY_IMAGEURI};
    
        		int[] to = new int[]{R.id.text2,R.id.timestamp,R.id.dictTag,R.id.list2_image};
    
        		SimpleCursorAdapter dates = 
        			new SimpleCursorAdapter(this, R.layout.diktations_row, datesCursor, from, to);
        		setListAdapter(dates);
    
    tack för hjälpen!
     
  2. woody

    woody Teen Droid Medlem

    Blev medlem:
    3 sept 2009
    Inlägg:
    319
    Mottagna gillanden:
    19

    MINA ENHETER

    SImpleCursorAdapter verkar kunna hantera att "bilden" antingen är en url eller ett resursid. se http://developer.android.com/reference/android/widget/SimpleCursorAdapter.html#setViewImage%28android.widget.ImageView,%20java.lang.String%29
    Vad är det du lagrar i databasen? Rådata, Url eller resurs-id?

    Om det är rådata får du implemetera en ViewBinder som skapar en Drawable på något sätt och sätter den till ImageViewven med http://developer.android.com/reference/android/widget/ImageView.html#setImageDrawable%28android.graphics.drawable.Drawable%29 och använda metoden http://developer.android.com/reference/android/widget/SimpleCursorAdapter.html#setViewBinder%28android.widget.SimpleCursorAdapter.ViewBinder%29 på din SimpleCusrorAdapter
     
  3. mardox

    mardox Kid Droid Medlem

    Blev medlem:
    31 jan 2010
    Inlägg:
    73
    Mottagna gillanden:
    6

    MINA ENHETER

    ja asså det jag lagrar i databasen är rena textsträngar. jag har ju en res drawable men vill spara den i databasen så när jag skapar listan kan olika rader ha olika bilder
     
  4. mardox

    mardox Kid Droid Medlem

    Blev medlem:
    31 jan 2010
    Inlägg:
    73
    Mottagna gillanden:
    6

    MINA ENHETER

    såg nu vad jag gjort fel, tack för hjälpen ändå:)
     
  5. coredev

    coredev Youth Droid Medlem

    Blev medlem:
    24 feb 2010
    Inlägg:
    135
    Mottagna gillanden:
    2

    MINA ENHETER

    Rent generellt bör du lagra bilderna på disk och sökvägen till bilden i din databas. Databaser är egentligen inte gjorda för att spara bilder och leder oftast bara till skalproblem och massor med overhead och liknande otrevligheter. :-)