3 votes

Comment puis-je définir la vue de l'image qui est stockée dans le système de fichiers en fonction du chemin dans la base de données ?

J'ai trois questions :

  1. Si je choisis de stocker image.png dans le système de fichiers où dois-je le stocker res/drawable/image_1.png ou res/drawable/images/image_1.png

  2. Et je vais stocker le chemin de l'image dans la base de données. Que dois-je mettre dans image_path ex. de terrain image_1 o images/image_1 ou etc.

  3. Comment puis-je obtenir le chemin de l'image à partir de la base de données et définir l'image à afficher en suivant mon code en bas ? Pourriez-vous le modifier pour moi ?

J'ai déjà la réponse

  1. en cas de stockage du fichier image dans le système de fichiers en assets/images/pic_1.png
  2. Dans la base de données, dans le champ "image_path", vous mettrez images/pic_1.png en elle.
  3. Pour obtenir et fixer l'image : selon la réponse de Trim.

ET j'ai corrigé le code suivant selon la réponse de Trim.

Merci beaucoup.

placeListActivity.class

public class placeListActivity extends ListActivity {

    private static MyDB mDbHelper;
    String[] from = new String[] { Constants.COL_TITLE};
    int[] to = new int[] {R.id.list_place_title};
    private Cursor c;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        mDbHelper = new MyDB(this);
        mDbHelper.createDatabase();
        mDbHelper.open();
        c = mDbHelper.getAllPlaces();

        setListAdapter(new SimpleCursorAdapter(this, 
                  R.layout.list_place, c, 
                  from, to));

        final ListView lv = getListView();

        lv.setOnItemClickListener(new OnItemClickListener() {
            public void onItemClick(AdapterView<?> parent, View view,int position, long id) {

                Intent i = new Intent(view.getContext(), Place.class);    
                i.putExtra(Constants.KEY_ID, id);
                i.putExtra(Constants.COL_TITLE, c.getString(
                        c.getColumnIndexOrThrow(Constants.COL_TITLE)));
                i.putExtra(Constants.COL_CONTENT, c.getString(
                        c.getColumnIndexOrThrow(Constants.COL_CONTENT)));

                i.putExtra(Constants.COL_IMAGE, c.getString(
                        c.getColumnIndexOrThrow(Constants.COL_IMAGE)));

                startActivity(i);

            }
          });

    }

}

Place.class

public class Place extends Activity {

    private TextView title;
    private TextView content;
    private ImageView placeImage;

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        this.setContentView(R.layout.detail_place);

        title = (TextView) findViewById(R.id.place_title);
        content = (TextView) findViewById(R.id.place_content);

        placeImage = (ImageView) findViewById(R.id.place_image);

        Bundle extras = getIntent().getExtras();
        if (extras != null) {
        // reference XML defined views that we will touch in code
        String stringTitle = extras.getString(Constants.COL_TITLE);
        String stringContent = extras.getString(Constants.COL_CONTENT);

        String imageID = extras.getString(Constants.COL_IMAGE);

        if (title != null) {
            title.setText(stringTitle); 
        }
        if (content != null) {
            content.setText(stringContent);
        }

        /*if (placeImage != null) {
            placeImage.setImageDrawable(Drawable.createFromPath(imageID));
        }*/

        if (placeImage != null) {

        try {
            InputStream path = getAssets().open(imagePath);
            Bitmap bit = BitmapFactory.decodeStream(path);
            placeImage.setImageBitmap(bit);
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
            }
        }
    }
}

5voto

Timuçin Points 2193

Vous pouvez placer vos images sous "assets/images" répertoire. Dans ce cas, le chemin que vous utiliserez dans getAssets().open(String path) sera comme "images/pic_1.png". Vous pouvez appeler getAssets() n'importe où dans votre activité. Il existe également un setImageBitmap(Bitmap bm) méthode. Vous pouvez créer un bitmap à partir du chemin via BitmapFactory.decodeFile(String path) .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X