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

ساخت علاقه مندی ها بدون دیتابیس

Bahamin Dadras  11 سال پیش  11 سال پیش
+3 0

سلام خدمت دوستان

من 10 اکتویتی دارم,میخواستم برای هرکدام از آنها یک قسمت علاقه مندی هم درست کنم که در در یک اکنیویتی جدا نمایش بده.میشه راهنماییم کنین؟اصلا هم در برنامم از دیتابیس استفاده نکردم.ممنون

+4 0
یه مقدار const با نام مثلا id برای هر اکتیویتی تعریف کن. از این آیدی برای ذخیره کردن اکتیویتی مارک شده تو prefrences استفاده کن. ساختار کلی شبیه حالت دیتابیسیش میشه (11 سال پیش)
0 0
سلام میشه یکم بیشتر توضیح بدی خدا خیرت بده لنگم آقای حسین زاده عزیز؟ (11 سال پیش)
0 0
دقیقن همین سناریو رو داری انجام میدی یا دیتا سورس با مدلی خاص داری؟ (11 سال پیش)
0 0
دقیقا همینه چند تا اکتیویتی دارم که توی لایه xml اونا یک نصویر گذاشتم که با کلیک روی تصویر اون اکتیویتی fav بشه ممنون از شما (11 سال پیش)
0 0
به صورت کلی یه مشخصه نیاز داری. مثلا نام کلاس اکتیویتی ، یا همون مقدار عددی که قبلن گفتم. این مقدار به ازای هر اکتیویتی یکتاس. حالا با زدن اون عکست میای چک میکنی اگه قبلن تو shared preferences ثبتش کرده بودی پاکش میکنی و اگه ثبت نشده بود ثبت میکنی. نهایتا موقع باز شدن اکتیویتی هم چک میکنی که اگه قبلن ثبت شده یه عکس نشون بدی - اگه نشه یه عکس دیگه. کلیات اجرا با بقیه مدل های لیست علاقمندی بدون در نظر گرفتن نوع دیتاسورس یکسانه (11 سال پیش)
0 0
تشکر (11 سال پیش)
 برای این سوال 2 پاسخ وجود دارد.
پاسخ به سوال 
underomeda  11 سال پیش
+3 0

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

این کد برای اضافه کردن ایتم به لیست علاقه ها:

   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;
    }



+1 0
مرسی برادر...میشه یکم توضیح بدی؟ من نمیدونم الان دقیقا باید چی کار کنم!شرمنده وقتتو میگیرم (11 سال پیش)
+1 0
خواهشا بیشتر توضیح بدین ممنون (11 سال پیش)
0 0
سلام میشه یکم بیشتر توضیح بدی خدا خیرت بده لنگم ؟ (11 سال پیش)
پاسخ به سوال 
یگانه  11 سال پیش
0 0

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

 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 بود اون آیتم از لیست ویو حذف بشه اما هر چی تو لیست ویو بعنوان علاقه مندی هست پاک میشه لطفا راهنمایی بفرمایین

 

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