نمایش نتایج 1 تا 13 از 13

نام تاپیک: مشکل در ذخیره و فراخوانی عکس در sqlite

  1. #1

    مشکل در ذخیره و فراخوانی عکس در sqlite

    سلام
    (من این مورد رو در سایت جستجو کردم و به نتیجه نرسیدم)
    من در SQLite یک جدول ساختم و می خوام اطلاعات دو ستون (کشور و عکس پرچم) اون رو فراخوانی کنم و در فرگمنتم نمایش بدم
    ستون کشور رو می تونم نمایش بدم .
    ولی درمورد عکس پرچم :
    اولا این ستونم در دیتابیس خالیه و نمیدونم باید چطوری مقدار بدم؟
    دوما برفرض پرکردن این ستون توی دیتابیس نمیدونم چطوری باید فراخوانی کنم و در فرگمنتم نمایش بدم؟

    عکس کدهای کلاس فرگمنت و کلاس آداپتر و کلاس (getter(),stter()1) رو گذاشتم راهنمایی کنید ممنون میشم

    این کلاس فرگمنت:
    1.png

    کلاس آداپتر و فراخوانی متد getCountry_Name() و ست کردن آن در یک تکست ویو برای نمایش در فرگمنت:
    2.png

    کلاس Structure:
    3.png

  2. #2
    کاربر دائمی آواتار hesam67_b
    تاریخ عضویت
    دی 1387
    محل زندگی
    مازندران
    پست
    192

    نقل قول: مشکل در ذخیره و فراخوانی عکس در sqlite

    با سلام.
    شما میتونی اسم فایل رو در دیتابیس ذخیره کنی و فایل مربوطه رو در فولدر assets قرار بدی.
    بعداز اون میتونی در آداپتر یک imagview تعریف و عکس پرچم رو از دیتابیس گرفته و نمایش بدی.

    //loadDatabase
    Structure country = new Structure();
    country.setname = ...;
    country.setflag = ...;

    //adapter
    holder.txtName.settext(name);
    holder.imgFlag.setImageBitmap(image);

  3. #3
    کاربر دائمی آواتار ghasem110deh
    تاریخ عضویت
    اردیبهشت 1393
    محل زندگی
    تهران
    پست
    1,148

    نقل قول: مشکل در ذخیره و فراخوانی عکس در sqlite

    نقل قول نوشته شده توسط raha.scientific مشاهده تاپیک
    سلام
    (من این مورد رو در سایت جستجو کردم و به نتیجه نرسیدم)
    من در SQLite یک جدول ساختم و می خوام اطلاعات دو ستون (کشور و عکس پرچم) اون رو فراخوانی کنم و در فرگمنتم نمایش بدم
    ستون کشور رو می تونم نمایش بدم .
    ولی درمورد عکس پرچم :
    اولا این ستونم در دیتابیس خالیه و نمیدونم باید چطوری مقدار بدم؟
    دوما برفرض پرکردن این ستون توی دیتابیس نمیدونم چطوری باید فراخوانی کنم و در فرگمنتم نمایش بدم؟

    عکس کدهای کلاس فرگمنت و کلاس آداپتر و کلاس (getter(),stter()1) رو گذاشتم راهنمایی کنید ممنون میش

    سلام :-)
    شاید این لینک کمک تون کنه :

    http://stackoverflow.com/questions/1...ase-in-android

  4. #4

    نقل قول: مشکل در ذخیره و فراخوانی عکس در sqlite

    خیلی ممنون
    من بر اساس راهنمایی شما فایل عکسم رو (iran.png) در assets کپی کردم و همین اسم رو بدون پسوند در splite در ستون Flag نوشتم(برای کشور ایران)
    در کلاس آداپترم یک imageview و یک Bitmap تعریف کردم:
    ImageView img_flags;
    Bitmap bmp;

    holder.img_flags.setImageBitmap(bmp);



    و در کلاس فرگمنت در متد loadDatabase:

    Structure structure = new Structure();
    structure.setFlag(cursor.getString(4));//چون ستون پرچم ستون چهارم دیتابیس هست
    arrayList.add(structure);


    ولی بازم عکس ها رو نشون نمیده موقع اجرا!

    به نظرتون برای گرفتن عکس نباید مثل گرفتن متن از لیست استفاده کنم در این صورت به چه صورت؟
    برای گرفتن عکس در کلاس آداپتر یک لیست تعریف کردم:

    List<Structure> items = Collections.emptyList();
    holder.txt_countryname.setText(items.get(position).getCountry_Name());

    چی کار بکنم نشون بده عکس ها رو ممنون...

  5. #5
    کاربر دائمی آواتار hesam67_b
    تاریخ عضویت
    دی 1387
    محل زندگی
    مازندران
    پست
    192

    نقل قول: مشکل در ذخیره و فراخوانی عکس در sqlite

    مشکل از اونجاست که شما باید فایل رو از assets بگیری که این نیاز به دستورالعمل خاصی داره.
    تابع زیر این کار رو برات انجام میده.

    public static Bitmap getBitmapFromAsset(Context paramContext, String strName)
    {
    AssetManager assetManager = paramContext.getAssets();
    InputStream istr = null;

    try {
    istr = assetManager.open(strName);
    }
    catch (IOException e) {}
    Bitmap bitmap = BitmapFactory.decodeStream(istr);
    return bitmap;
    }


    اون bitmap که تعریف کردی اضافه هست.
    در آداپتر کافیه اسم فایل (+ فرمت) رو به این تابع بدی که خروجیش bitmap هست. بعد خروجی رو به imageview بدی.

  6. #6

    نقل قول: مشکل در ذخیره و فراخوانی عکس در sqlite

    نقل قول نوشته شده توسط hesam67_b مشاهده تاپیک
    مشکل از اونجاست که شما باید فایل رو از assets بگیری که این نیاز به دستورالعمل خاصی داره.
    تابع زیر این کار رو برات انجام میده.

    public static Bitmap getBitmapFromAsset(Context paramContext, String strName)
    {
    AssetManager assetManager = paramContext.getAssets();
    InputStream istr = null;

    try {
    istr = assetManager.open(strName);
    }
    catch (IOException e) {}
    Bitmap bitmap = BitmapFactory.decodeStream(istr);
    return bitmap;
    }


    اون bitmap که تعریف کردی اضافه هست.
    در آداپتر کافیه اسم فایل (+ فرمت) رو به این تابع بدی که خروجیش bitmap هست. بعد خروجی رو به imageview بدی.
    خیلی ممنون واقعا الان دیگه عکس ها نمایش داده میشن ...
    فقط میمونه یک سوال دیگه اینم اگر لطف کنید راهنمایی کنید ممنون میشم
    من چون عکس رو در دیتابیس هم گذاشتم و می خوام برای هر آیتم، پرچم مربوط به همون آیتم نمایش داده بشه می خوام از متد ()getFlag که (در کلاس Structure ) عکس ها
    رو از دیتابیس برمی گردونه استفاده کنم
    :
    بنابراین توی کلاس آداپترم در متد onBindViewHolder این کدها رو نوشتم

    List<Structure> items = Collections.emptyList();
    Database database=new Database(context);
    holder.img_flags.setImageBitmap(database.getBitmapFromAsset(context,items.get(position).getFlag()));

    __________________________________________________ ____________________________________

    و توی کلاس فرگمنتم درمتد LoadDatabase():
    متد setFlag() رو فراخوانی کردم

    Cursor cursor=database.QueryData("SELECT * FROM Country WHERE Ghareh='آفریقا'");
    if (cursor!=null && cursor.moveToFirst())
    {
    do {
    Structure structure = new Structure();
    structure.setCountry_Name(cursor.getString(1));
    structure.setFlag(cursor.getString(4));
    arrayList.add(structure);
    }
    while (cursor.moveToNext());
    }

    ولی فورس کلوز میده
    آخرین ویرایش به وسیله raha.scientific : شنبه 04 دی 1395 در 15:48 عصر

  7. #7

    نقل قول: مشکل در ذخیره و فراخوانی عکس در sqlite

    در واقع اگر فقط از assets فراخوانی کنم همون عکس رو برای تمام کشور ها نشون میده و عکس رو از دیتابیس نمیگیره
    یعنی من اگر این متد رو در فرگمنتم کامنت کنم بازم عکس ها رو نشون میده
    //structure.setFlag(cursor.getString(4));
    getFlag() استفاده شده ولی جایی از متدsetFlag() چون از متد
    استفاده نشده تا از دیتابیس فیلد رو برگردونه
    (
    getter , setter متدهای کلاس)

  8. #8
    کاربر دائمی آواتار hesam67_b
    تاریخ عضویت
    دی 1387
    محل زندگی
    مازندران
    پست
    192

    نقل قول: مشکل در ذخیره و فراخوانی عکس در sqlite

    من منظور شما رو متوجه نشدم. نیازی به ذخیره سازی عکس در دیتابیس نیست و پرچم ها رو در فولدر assets قرار بدید و فقط نام رو در دیتابیس ذخیره کنید و با اون تابعی که گفتم، عکس ها رو ست کنید.

  9. #9

    نقل قول: مشکل در ذخیره و فراخوانی عکس در sqlite

    نقل قول نوشته شده توسط hesam67_b مشاهده تاپیک
    من منظور شما رو متوجه نشدم. نیازی به ذخیره سازی عکس در دیتابیس نیست و پرچم ها رو در فولدر assets قرار بدید و فقط نام رو در دیتابیس ذخیره کنید و با اون تابعی که گفتم، عکس ها رو ست کنید.
    بله منم همین کار رو انجام دادم
    یک عکس ضمیمه کردم دقیقا مراحلی که شما گفتید رو انجام دادم
    aa.png

    با این کدها توی همه ایمیج ویو ها یک پرچم رو نشون میده
    ( از کاردویو استفاده کردم که یک imageview و یک textview داره (پرچم و نام کشور) )

  10. #10
    کاربر دائمی آواتار hesam67_b
    تاریخ عضویت
    دی 1387
    محل زندگی
    مازندران
    پست
    192

    نقل قول: مشکل در ذخیره و فراخوانی عکس در sqlite

    ظاهرا برخی از کشورها پرچم نداره. شما باید یک عکس پیشفرض داشته باشی و در آداپتر چک کنی اگر کشور موردنظر پرچم داشت که پرچم رو ست میکنی وگرنه عکس پیشفرض رو ست کن.
    if else قرار بده.

  11. #11

    نقل قول: مشکل در ذخیره و فراخوانی عکس در sqlite

    سلام خیلی ممنون از توضیحتون
    کدها رو به این صورت تغییر دادم:
     public void onBindViewHolder(ViewHolder holder, int position) {
    Database database=new Database(context);
    //from database
    holder.txt_countryname.setText(items.get(position) .getCountry_Name());

    int resID = context.getResources().getIdentifier(items.get(pos ition).getFlag(), "mipmap", context.getPackageName());
    if((items.get(position).getFlag().equals("0"))
    {
    try {
    holder.img_flags.setImageBitmap(database.getBitmap FromAssets("iran.png"));
    } catch (IOException e) {
    e.printStackTrace();
    }
    }
    else {
    holder.img_flags.setImageResource(resID);
    }
    این بار عکس ها رو در mipmap قرار دادم
    به ازای پرچم هایی که صفر هستند یک عکس پیش فرض ست کردم(فعلا پرچم ایران رو) ؛{ البته متدش رو هم کمی تغییر دادم که context نداشته باشه}
    و پرچم هایی که خالی نیستند رو هم با متد getFlag() پر می کنم

    ولی وقتی دیباگ می کنم position یکی یکی میره بالا(0,1,2,3,4,...)
    ولی resID همیشه صفره

    مشکل از اینه؟



    آخرین ویرایش به وسیله raha.scientific : دوشنبه 06 دی 1395 در 16:16 عصر

  12. #12
    کاربر دائمی آواتار hesam67_b
    تاریخ عضویت
    دی 1387
    محل زندگی
    مازندران
    پست
    192

    نقل قول: مشکل در ذخیره و فراخوانی عکس در sqlite

    شما وقتی میخوای یک فایل رو از طریق
    context.getResources().getIdentifier
    دریافت کنی، باید فایل رو بدون پسوند بدی.
    int resID = context.getResources().getIdentifier(items.get(pos  ition).getFlag().replace(".png", ""), "mipmap", context.getPackageName());

  13. #13

    نقل قول: مشکل در ذخیره و فراخوانی عکس در sqlite

    نقل قول نوشته شده توسط hesam67_b مشاهده تاپیک
    شما وقتی میخوای یک فایل رو از طریق
    context.getResources().getIdentifier
    دریافت کنی، باید فایل رو بدون پسوند بدی.
    int resID = context.getResources().getIdentifier(items.get(pos  ition).getFlag().replace(".png", ""), "mipmap", context.getPackageName());
    این جوری هم امتحان کردم نشد،
    در آخر هم اسم ها رو بدون پسوند وارد کردم (پسوند ها رو حذف کردم از فیلد Flag) و کدهای زیر رو نوشتم که بازم نشد:
    int resID = context.getResources().getIdentifier(items.get(pos ition).getFlag(), "mipmap", context.getPackageName());

    if((items.get(position).getFlag().equals("0"))

    {

    try {

    holder.img_flags.setImageBitmap(database.getBitmap FromAssets("iran.png"));

    } catch (IOException e) {

    e.printStackTrace();

    }

    }

    else {

    holder.img_flags.setImageResource(resID);درهر حال ممنون از راهنماییتون.

تاپیک های مشابه

  1. سوال: ذخیره و فراخوانی عکس در Sql
    نوشته شده توسط h hamidi در بخش C#‎‎
    پاسخ: 1
    آخرین پست: جمعه 03 دی 1389, 00:46 صبح
  2. پاسخ: 8
    آخرین پست: دوشنبه 29 آذر 1389, 05:53 صبح
  3. ذخيره و فراخواني عكس در ديتا بيس
    نوشته شده توسط llsppaa در بخش برنامه نویسی در 6 VB
    پاسخ: 0
    آخرین پست: سه شنبه 08 مرداد 1387, 02:03 صبح
  4. مشکل در ذخیره و فراخوانی فایلها با نوع image در sql server
    نوشته شده توسط parandeh1383 در بخش VB.NET
    پاسخ: 8
    آخرین پست: یک شنبه 02 مرداد 1384, 18:49 عصر
  5. مشکل در ذخیره كردن عکس در ديتابيس
    نوشته شده توسط Babak-Aghili در بخش بانک های اطلاعاتی در Delphi
    پاسخ: 11
    آخرین پست: جمعه 10 تیر 1384, 23:43 عصر

برچسب های این تاپیک

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •