آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

سوال در مورد ذخیره کردن اسم عکس در دیتابیس و فراخوانی آن از پوشه Drawable

MILAD-MB  12 سال پیش  11 سال پیش
0 0

سلام. من داخل دیتابیسم برای عکس ها یک فیلد ساختم و اسم هر کدومشو متنی مثل img_one قرار دادم و میخوام از طریق پوشه Drawable عکس ها رو بترتیب فیلد عکسی که در دیتابیس ساختم داخل لیست ویو قرار بدم.

من واسه متن ها از این روش استفاده میکنم:

اکتیویتی دیتابیس

 public String Season_display(String table, int row) {

Cursor cursor = mydb.rawQuery("SELECT * FROM " + table + " group by Season ", null);
cursor.moveToPosition(row);
String s = cursor.getString(3);
return s;

این اکتیویتی هم واسه فراخوانی

 class AA extends ArrayAdapter<String> {
public AA() {
super(List_Season.this, R.layout.row_season, Name);
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater in = getLayoutInflater();
View row = in.inflate(R.layout.row_season, parent, false);

TextView name = (TextView) row.findViewById(R.id.row_season_name);
name.setText(Name[position]);
return (row);
}
}

private void refresh() {
db.open();
int s = db.count("database_db", "Season");
Name = new String[s];

for (int i = 0; i < s; i++) {
Name[i] = db.Season_display("database_db", i);
}
db.close();

حالا از این روش چطوری عکس ها رو روی یک قسمت مشخص قرار بدم؟

0 0
این عبارت رو تو سایت خودمون بگردید : getidentifier (12 سال پیش)
0 0
SP!R!T جان ممنون از راهنماییت. دوستان کسی نظری نداره؟ (12 سال پیش)
 برای این سوال 2 پاسخ وجود دارد.
پاسخ به سوال 
hosein2020  12 سال پیش
+3 0

شما اسم هر عکس رو که در دیتابیس ذخیره کردید ، خوب همونطور که SP!R!T گفتند از getidentifier استفاده کن .

 int imgId = getResources().getIdentifier(
img_name, "drawable",getPackageName()); if (imgId != 0) {
ImageView.setImageResource(imgId); } else {
//عکس پیشفرض در صورتی که عکس یافت نشد ImageView.setImageResource(R.drawable.ic_launcher);
}
0 0
ممنون حسین جان. ما ارادت خاصی نسبت به S P ! R ! T جان عزیز داریم. این روش رو امتحان میکنم و نتیجه رو اعلام میکنم. بازم ممنون از شما و S P ! R ! T عزیز :) (12 سال پیش)
0 0
حسین جان تست کردم و به یه جاهایی رسیدم. حالا به جای img_name ی که شما نوشتید اگه اسم عکس مورد نظرم رو به این صورت "img_one" بنوسیم فقط همین عکس رو نشون میده. حالا اگه بخوام تمام عکس ها رو وارد کنم چی؟ اگه img_name باید از قبل مقدار دهی بشه باید چطور تعریفش کنیم؟ ممنون (12 سال پیش)
0 0
میلاد منم قبلاً میخواستم همین کارو بکنم و جواب هم داد لینک -- خب دوستان حالا اگه قصد داشته باشیم عکس ها رو در assets ذخیره کنیم باید از چه کدی استفاده کنیم؟ یه سئوال دیگه هم دارم اونم اینه که چه فرقی بین ذخیره تصاویر در assets با drawable ، به جز اینکه اگه در drawable ذخیره بشه بهشون یه id تعلق میگیره هست؟ در کاربردهایی مثل بالا استانداردش چیه ؟ تصاویر باید کجا ذخیره بشه؟ (12 سال پیش)
0 0
Mr.Neo ممنون از راهنماییت. ببخشید مقدار img_name رو باید چی بدم؟ آیا این img_name فیلده؟ از چه نوعیه؟ و از کجا باید تعریف بشه؟ (12 سال پیش)
0 0
در کد بالا img_name اسم تصاویری هست که شما در فولدر drawable ذخیره کردید ، شما هر تصویری که بخواید id یش رو داشته باشید باید به جای img_name اسم اون تصویر رو بدید . در کدی که من استفاده کرده بودم چون نامگذاری تصاویر به صورت فرضاً name1, name2 , ... بود به صورتی که دیدید اسم رو تعیین کردم البته من برای لیست ویو این روش رو استفاده نکردم باید هنوز امتحان کنم اشکالام رو از شما بپرسم :) شما میتونید مثلاً اسم تصاویری که از دیتابیس دریافت میکنید به صورت یه پارامتر به متدی که تعریف میکنید بدید نوعشم میتونه local باشه. امیدوارم جوابم به دردی خورده باشه (12 سال پیش)
0 0
آره من واسه لیست ویو میخوام. من واسه متن مشکلی ندارم اما مشکل اصلیم عکسه. اما بنظرم این راه واسه من بکار نیاد. ممنون دوست عزیز (12 سال پیش)
0 0
دوستان عزیز همچنان نیازمند یاری سبزتان هستیم :) (12 سال پیش)
پاسخ به سوال 
hosein2020  11 سال پیش
+2 0

سلام ، شما باید یک customAdapter بسازید ،بعد تو قسمت fill هم.نجوری که متن رو ست میکنید ،الان اسم عکس ها رو دارید ،همونطور که بالا گفتم چجوری عکس رو از پوشه بخونید و ست کنید .کد customAdapter رو میزارم ،امید است که حل بشه ،نشد پروژتون رو بفرستید به من .


public class AdapterCustom extends ArrayAdapter<Fields> {

    public drawable d;

    public Context context = G.context;

    public AdapterCustom(ArrayList<Fields> array) {
        super(G.context, R.layout.custom_list_view, array);
      
    }

    private class ViewHolder {
        public TextView textView;
        public ImageView imageView;

        public ViewHolder(View view) {
            textView = (TextView) view.findViewById(R.id.textView);

            imageView = (ImageView) view.findViewById(R.id.imageView);
        }

        public void fill(ArrayAdapter<Fields> adapter, final Fields item,
                int position) {
            textView.setText(item.textViewVar);
            int imgId = 0;
            try {

                int identifier = context.getResources().getIdentifier(
                        item.imgName, "drawable", context.getPackageName());
                imgId = identifier;
            } catch (Exception e) {
                // TODO: handle exception
            }

            if (imgId != 0) {
                imageView.setImageResource(imgId);
            } else {
                imageView.setImageResource(R.drawable.ic_launcher);
            }
          
        }
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        // TODO Auto-generated method stub
        ViewHolder holder;
        Fields item = getItem(position);
        if (convertView == null) {
            convertView = G.inflater.inflate(
                    R.layout.custom_list_view, parent, false);
            holder = new ViewHolder(convertView);
            convertView.setTag(holder);
        } else {
            holder = (ViewHolder) convertView.getTag();
        }
        holder.fill(this, item, position);
        return convertView;
    }

}

 

 

0 0
ممنونم حسین جان. چشم انجام میدم نتیجه رو اعلام میکنم. بازم ممنون :) (11 سال پیش)

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .