изображение не отображается из поля sqlite db - PullRequest
0 голосов
/ 03 декабря 2011

У меня проблемы с поиском пути к моему изображению на моем sd в приложении, над которым я работаю. Я пытался использовать метод setImageDrawable, а также метод setImageURI и ни Кажется, чтобы отобразить изображение на моем SDCard. Поле базы данных для picpath представляет собой строку поле, которое просто указывает на файл на моей SD-карте. Я получаю стандартное исключение во время выполнения ошибка в моей трассировке стека. Код выглядит следующим образом:

public void DisplayAllStudents(){

         //File f = new File("/sdcard/studentpics/gntamT.jpg");

         DBAdapter db = new DBAdapter(this);

         db.open();

         Cursor c = db.getAllStudents();

         if(c.moveToFirst()){

             do{

                 stuID = c.getString(c.getColumnIndex(db.KEY_ROWID));
                 stuName = c.getString(c.getColumnIndex(db.KEY_STUDENTNAME));
                 stuDOB = c.getString(c.getColumnIndex(db.KEY_DOB));
                 stuAddress1 = c.getString(c.getColumnIndex(db.KEY_ADDRESS1));
                 stuAddress2 = c.getString(c.getColumnIndex(db.KEY_ADDRESS2));
                 stuTown = c.getString(c.getColumnIndex(db.KEY_TOWN));
                 stuPostcode = c.getString(c.getColumnIndex(db.KEY_POSTCODE));
                 stuPhone = c.getString(c.getColumnIndex(db.KEY_PHONE));
                 stuPicPath = c.getString(c.getColumnIndex(db.KEY_PIC_PATH));

                 //add database values to ArrayList
                 results.add(" " + Html.fromHtml(stuName.toString() + "<br>" + stuDOB + "<br>" + stuAddress1 + "<br>" + stuAddress2 + "<br>" + stuTown + "<br>" + stuPostcode + "<br>" + stuPhone));

                 //add fields to our second array list so that we can
                 //pass ALL of the fields to the student details screen
                 dataList.add(stuID.toString() + "," + stuName.toString() + "," + stuDOB.toString() + "," + stuAddress1.toString() + "," + stuAddress2.toString() + "," + stuTown.toString() + "," + stuPhone.toString());


                 ImageView imgView = (ImageView) findViewById(R.id.studenticon);
                 imgView.setImageDrawable(Drawable.createFromPath(strPathToPic));


                 //display record
                 //DisplayStudent(c);
             }while(c.moveToNext());
         }
        //bind data to list view
         list.setAdapter(new ArrayAdapter<String>(StudentTrackerActivity.this,R.layout.datalayout,R.id.txtFname,results));



        list.setOnItemClickListener(new AdapterView.OnItemClickListener() {

            public void onItemClick(AdapterView<?> parent, View v, int position,
                    long id) {

               try{


                String item = list.getItemAtPosition(position).toString();


                Intent intent = new Intent(StudentTrackerActivity.this,StudentDetails.class);

                //pass values from list view to student details 
                //screen 
                Bundle b = new Bundle(); 
                b.putString("stDetails", item);

                intent.putExtras(b);

                startActivity(intent);


               }catch(IllegalStateException ex){

                   ex.printStackTrace();
               }

                //Toast.makeText(getApplicationContext(), item, Toast.LENGTH_LONG).show();





            }
        });

         db.close();
    }

Путь к картинке:

strPathToPic = dir.toString() + "/" + txtStudentName.getText().toString().trim() + ".jpg";

Трассировка стека:

Thread [<3> main] (Suspended (exception RuntimeException))  
    ActivityThread.performLaunchActivity(ActivityThread$ActivityRecord, Intent) line: 2496  
    ActivityThread.handleLaunchActivity(ActivityThread$ActivityRecord, Intent) line: 2512   
    ActivityThread.access$2200(ActivityThread, ActivityThread$ActivityRecord, Intent) line: 119 
    ActivityThread$H.handleMessage(Message) line: 1863  
    ActivityThread$H(Handler).dispatchMessage(Message) line: 99 
    Looper.loop() line: 123 
    ActivityThread.main(String[]) line: 4363    
    Method.invokeNative(Object, Object[], Class, Class[], Class, int, boolean) line: not available [native method]  
    Method.invoke(Object, Object...) line: 521  
    ZygoteInit$MethodAndArgsCaller.run() line: 860  
    ZygoteInit.main(String[]) line: 618 
    NativeStart.main(String[]) line: not available [native method]  

Ответы [ 2 ]

0 голосов
/ 03 декабря 2011
Bitmap photobitmap = BitmapFactory.decodeFile(strPathToPic);
imageView.setImageBitmap(photobitmap);
0 голосов
/ 03 декабря 2011

Вы не рисуете изображение напрямую, поэтому используйте этот метод и нарисуйте изображение

    Drawable drawable_from_url(String url, String src_name) throws java.net.MalformedURLException, java.io.IOException 
{
    return Drawable.createFromStream(((java.io.InputStream)new java.net.URL(url).getContent()), src_name);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...