بروز خطا
[message]
اشتراک در سوال
رای ها
[dataList]
سوال در مورد ذخیره کردن اسم عکس در دیتابیس و فراخوانی آن از پوشه Drawable
سلام. من داخل دیتابیسم برای عکس ها یک فیلد ساختم و اسم هر کدومشو متنی مثل 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);
}
میلاد منم قبلاً میخواستم همین کارو بکنم و جواب هم داد لینک -- خب دوستان حالا اگه قصد داشته باشیم عکس ها رو در assets ذخیره کنیم باید از چه کدی استفاده کنیم؟ یه سئوال دیگه هم دارم اونم اینه که چه فرقی بین ذخیره تصاویر در assets با drawable ، به جز اینکه اگه در drawable ذخیره بشه بهشون یه id تعلق میگیره هست؟ در کاربردهایی مثل بالا استانداردش چیه ؟ تصاویر باید کجا ذخیره بشه؟ (12 سال پیش)
در کد بالا img_name اسم تصاویری هست که شما در فولدر drawable ذخیره کردید ، شما هر تصویری که بخواید id یش رو داشته باشید باید به جای img_name اسم اون تصویر رو بدید . در کدی که من استفاده کرده بودم چون نامگذاری تصاویر به صورت فرضاً name1, name2 , ... بود به صورتی که دیدید اسم رو تعیین کردم البته من برای لیست ویو این روش رو استفاده نکردم باید هنوز امتحان کنم اشکالام رو از شما بپرسم :) شما میتونید مثلاً اسم تصاویری که از دیتابیس دریافت میکنید به صورت یه پارامتر به متدی که تعریف میکنید بدید نوعشم میتونه local باشه. امیدوارم جوابم به دردی خورده باشه (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;
}
}
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .