ساخت علاقه مندی ها بدون دیتابیس
سلام خدمت دوستان
من 10 اکتویتی دارم,میخواستم برای هرکدام از آنها یک قسمت علاقه مندی هم درست کنم که در در یک اکنیویتی جدا نمایش بده.میشه راهنماییم کنین؟اصلا هم در برنامم از دیتابیس استفاده نکردم.ممنون
راه حل آقای حسین زاده درست هست.اگه میخوای یه لیست علاقه داشته باشی از این کد استفاده کن حتما جواب میده من خودم قبلا استفاده کردم.
این کد برای اضافه کردن ایتم به لیست علاقه ها:
G.addToFavorites(G.SelectItem.id);
این کد رو توی کلاس G قرار بده.
private static int[] favArr;
private static int[] LIKE;
public static int[] getFavorite() {
favArr = loadArray("favArr", G.context);
return favArr;
}
public static boolean addToFavorite(int id) {
boolean ret = getIndexOf(id, G.favArr) == -1;
int idx = G.favArr != null ? G.favArr.length : 0;
int[] newArray = new int[idx + 1];
for (int i = 0; i < idx; i++)
newArray[i] = favArr[i];
favArr = newArray;
if (ret) {
G.favArr[idx] = id;
ret = ret && saveArray(favArr, "favArr", G.context);
}
return ret;
}
public static int[] getFavorites() {
LIKE = loadArray("LIKE", G.context);
return LIKE;
}
public static boolean addToFavorites(int id) {
boolean ret = getIndexOf(id, G.LIKE) == -1;
int idx = G.LIKE != null ? G.LIKE.length : 0;
int[] newArray = new int[idx + 1];
//System.arraycopy(favArr, 0, newArray, 0, favArr.length);
//an alternative to using System.arraycopy would be a for-loop:
for (int i = 0; i < idx; i++)
newArray[i] = LIKE[i];
LIKE = newArray;
if (ret) {
G.LIKE[idx] = id;
ret = ret && saveArray(LIKE, "LIKE", G.context);
}
return ret;
}
public static boolean saveArray(int[] array, String arrayName, Context mContext) {
SharedPreferences prefs = mContext.getSharedPreferences("favoritesList", 0);
// SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(G.context);
SharedPreferences.Editor editor = prefs.edit();
editor.putInt(arrayName + "_size", array.length);
for (int i = 0; i < array.length; i++)
editor.putInt(arrayName + "_" + i, array[i]);
return editor.commit();
}
public static int[] loadArray(String arrayName, Context mContext) {
SharedPreferences prefs = mContext.getSharedPreferences("favoritesList", 0);
int size = prefs.getInt(arrayName + "_size", 0);
int array[] = new int[size];
for (int i = 0; i < size; i++)
array[i] = prefs.getInt(arrayName + "_" + i, 0);
return array;
}
public static int getIndexOf(int toSearch, int[] tab) {
int v = -1;
if (tab != null)
for (int i = 0; i < tab.length; i++)
if (tab[i] == toSearch) {
v = i;
break;
}
return v;
}
ببخشید آقای حسین زاده دوباره مزاحم شدم من با متد زیر تونستم بگم وقتی کلیک شد تصویر مربوط به علاقه مندی آپدیت بشه و وقتی دوبلره کلیک شد به حالت قبل برگرده
lay_fav.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
check = G.preference2.getBoolean("KEY_FAV", false);
if(check ==false){
SharedPreferences.Editor edit = G.preference2.edit();
edit.putBoolean("KEY_FAV", true);
edit.commit();
imageView1.setImageResource(R.drawable.fav_act_on);
Toast.makeText(G.context, "به لیست علاقه مندی اضافه شد", Toast.LENGTH_SHORT).show();
}else if(check==true){
SharedPreferences.Editor edit = G.preference2.edit();
edit.putBoolean("KEY_FAV", false);
edit.commit();
imageView1.setImageResource(R.drawable.fav_act);
Toast.makeText(G.context, "از لیست علاقه مندی حذف شد", Toast.LENGTH_SHORT).show();
}
}
});
بامتد دوم هم مقدار کلید sherad perfarmce گرفتم گفتم اگه true اضافه کن به لیست ویو اما میخام وقتی مقدار کلید sheard perfarmce
if(G.preference2.getBoolean("KEY_FAV", false)){
StructNote note = new StructNote();
note.title = "اسطوخودوس";
G.notes.add(note);
adapter.notifyDataSetChanged();
SharedPreferences.Editor editor2 = G.preference3.edit();
editor2.putBoolean("VAL", true);
editor2.commit();
}
برابر با false بود اون آیتم از لیست ویو حذف بشه اما هر چی تو لیست ویو بعنوان علاقه مندی هست پاک میشه لطفا راهنمایی بفرمایین
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .