2014-01-30 2 views
0

그리드보기에 문제가 있습니다. 테이블에 이미지를 저장 한 다음 그리드보기로 표시하고 싶습니다.데이터베이스가있는 Android GridView

// ImageAdapter 

    String[] strings = db.getPictures(); 
    Integer[] ints = new Integer[strings.length]; 
    for (int i=0; i < strings.length; i++) { 
     ints[i] = Integer.parseInt(strings[i]); 
    } 
    imageView.setImageResource(ints[position]); 
    return imageView; 


    //DatabaseHandler 

public String[] getPictures(){ 
    int i=0; 

    String selectQuery = "SELECT pictureName FROM Category"; 
    SQLiteDatabase db = this.getReadableDatabase(); 
    Cursor c = db.rawQuery(selectQuery, null); 
    int rowsNumber=c.getCount(); 
    String[] mThumbIds; 
    mThumbIds= new String[rowsNumber]; 

    if (c.moveToFirst()) { 
     do { 
      mThumbIds[i]=c.getString(0); 
      i++; 
     } while (c.moveToNext()); 
    } 

    return mThumbIds; 
} 

그리고 내 앱을 실행할 때 시작할 때 멍청 해집니다. 단일 문자열로 저장합니다. R.drawable.ic_work

+1

귀하의 logcat을 게시하십시오. –

+0

오류가 ** 리소스를 찾을 수 없습니다 ** –

+0

정수 16 진수 int로 구문 분석 할 Integer.parseInt ("ff0000", 16) 시도 할 – gvmani

답변

0

당신이 말한대로 R.drawable.ic_work을 문자열로 저장합니다.

imageView.setImageResource(ints[position]);이고 R.drawable.ic_work은 문자열입니다.

솔루션는 대신 R.drawable.ic_workint ID로 나타냅니다 R.drawable.ic_workint로 저장을 String로하기 때문에 저장하는 것입니다.

+0

내 문자열을 리소스에 대한 int 참조로 변경했습니다. 이제 R.drawable.ic_work가 아닌 2130837514를 저장하려고합니다. 그리고 작동합니다. – Dominik

+0

Congrats & Cheers :) –

1

대부분의 시나리오에서 장치는 메모리에 단일 원본 이미지를로드하지 않고 목록 만 남겨 둘 수 있습니다. 이미지를 표시하기 전에 크기를 조절해야합니다.