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

راهنمایی برای درج علاقمندی ها(حل نشده)پروژه ساده اضافه شد

oMiD4gApp  9 سال پیش  9 سال پیش
0 0

سلام دوستان...پروژه ای دارم که بخش های مختلفش رو خودم نوشتم هرطور بود اما این بخشش گیر کردم و هرکاری کردم نشد

پروژه هایی رو هم دیدم اما باز نتونستم از پسش بربیام ممنون میشم کمک کنید.

این یه پروژه برای دوستانی کل کدها رو میخوان ببینن

توی اکتیویتی اولم لیستی شبیه بالا رو دارم و میخوام کد یا متدی بنویسم که با هر بار کلیک روی ستاره ها اگر خاموش هستن روشن بشن و اگر روشن هستن خاموشن بشن و توی دیتابیس هم توی ستون fav مقدار 0 و یا 1 رو درج کنه

این کد باید توی دکمه star و در adapterapp قرار بگیره اما کد رو چطور بنویسم موضوعی هست که چندروزی هست درگیرم کرده

ممنون میشم راهنمایی کنید

 

+1 0
میتونید داخل ادپتر، همون جایی که Textview ها رو مقدار دهی میکنید برای fav هم متد OnClick بنویسید و داخل متد OnClick هم مقدار دیتابیس رو تغییر بدید و هم ستاره رو با عکس یک ستاره روشن جایگذین کنید. اگر کدهای Adapter رو بزارید بهتر میشه کمک کرد. (9 سال پیش)
 برای این سوال 5 پاسخ وجود دارد.
پاسخ به سوال 
oMiD4gApp  9 سال پیش
0 0

چیزی که نوشتم اینه که البته کدش درست نیست

  public void fill(ArrayAdapter<StructApplication> adapter, final StructApplication item, final int position) {
            txtName.setText(item.name);
            //

            img_fav.setOnClickListener(new OnClickListener() {

                @Override
                public void onClick(View arg0) {

                    if (x == false) {
                        G.database.rawQuery("UPDATE varzesh SET fav=1 WHERE id=" + position, null);
                        img_fav.setImageResource(R.drawable.star_on);
                        x = true;
                    } else {
                        G.database.rawQuery("UPDATE varzesh SET fav=0 WHERE id=" + position, null);
                        img_fav.setImageResource(R.drawable.star_off);
                        x = false;
                    }
                    //Intent intent = new Intent(G.currentActivity, activity_detail.class);
                    //intent.putExtra("name", position);
                    //G.currentActivity.startActivity(intent);

                }
            });

            Layout_root.setOnClickListener(new OnClickListener() {

                @Override
                public void onClick(View arg0) {
                    G.SelectedApplication = item;
                    Intent intent = new Intent(G.currentActivity, activity_detail.class);
                    intent.putExtra("page", position);
                    G.currentActivity.startActivity(intent);
                }
            });

 

0 0
چیزی که نوشتید به نظرت بدون مشکل میاد. آیا چواب گرفتید؟ (9 سال پیش)
0 0
این کد اینجا جواب نمیده چون توی لیست ویو هست - فرضا ما روی ایتم اول که خاموش هست کلیک کنیم و روشن بشه x=true و روی یه ایتم که خاموش هست کلیک کنیم چون x=true هست روشن نمیشه و باید دوبار کلیک کرد و ... که مشکل هست همین (9 سال پیش)
+1 0
به جای x توی یه ایتم دیگه به اسم isFavorite رو توی StructApplication اضافه کنید و بهش مقدار 0 و 1 بدین و مقدار پیش فرض هم که صفر به معنی خاموش بودن ستاره، حالا توی fill قبل از هر چیزی یه if بذارید که item.isFavorite رو بررسی کنه و اگر 0 هست ستاره خاموش و اگر 1 هست ستاره روشن بعد از این کد یک onClick بذارید و بگید اگه item.isFavorite مساوی 0 بوده مساوی یکش کن و ستاره رو روشن کن و برعکس... (9 سال پیش)
پاسخ به سوال 
oMiD4gApp  9 سال پیش
0 0

ممنون از جوابتون درست بود ، اما دو مشکل دیگه هست اینکه اول: ایتم هایی که fav برابر 1 هست با چراغ روشن نمایش داده نمیشن و دوم اینکه من با دستور اپدیت که این دستور هست مقدار fav تغییر نمیکنه!

 img_fav.setOnClickListener(new OnClickListener() {

                @Override
                public void onClick(View arg0) {

                    if (item.isFavorite == 0) {
                        img_fav.setImageResource(R.drawable.star_on);
                        G.database.rawQuery("UPDATE varzesh SET fav=1 WHERE id=" + position, null);
                        item.isFavorite = 1;
                    } else {
                        img_fav.setImageResource(R.drawable.star_off);
                        G.database.rawQuery("UPDATE varzesh SET fav=0 WHERE id=" + position, null);
                        item.isFavorite = 0;
                    }
+1 0
تو کامنت قبلی هم گفتم برای این مشکل باید قبل از هرچیزی توی متد fill برید item.isFavorite رو بررسی کنید و بگید اگه 1 هست img_fav.setImageResource(R.drawable.star_on); و در غیر این صورت چراغ خاموش باشه (9 سال پیش)
پاسخ به سوال 
oMiD4gApp  9 سال پیش
0 0

بله اونو هم نوشتم ابتدای متد fill اما بازم مواردی که fav=1 هست رو روشن نشون نمیده!

 public void fill(ArrayAdapter<StructApplication> adapter, final StructApplication item, final int position) {

           
            txtName.setText(item.name);
            //
            if (item.isFavorite == 0) {
                img_fav.setImageResource(R.drawable.star_off);
            } else {
                img_fav.setImageResource(R.drawable.star_on);
            }

            img_fav.setOnClickListener(new OnClickListener() {

                @Override
                public void onClick(View arg0) {

                    if (item.isFavorite == 0) {
                        img_fav.setImageResource(R.drawable.star_on);
                        G.database.rawQuery("UPDATE varzesh SET fav=1 WHERE id=" + position, null);
                        item.isFavorite = 1;
                    } else {
                        img_fav.setImageResource(R.drawable.star_off);
                        G.database.rawQuery("UPDATE varzesh SET fav=0 WHERE id=" + position, null);
                        item.isFavorite = 0;
                    }

                }
            });
0 0
تا جایی که میدونم این باید درست کار کنه! مطمئنید که حتما مساوی 1 هست؟! برای اطمینان از Log استفاده کنید تا یه موقع اشتباهاً صفر نباشه!!! و اینکه اگه درست بود برای setImageResourc از Handler استفاده کنید شاید مشکل از این باشه... (9 سال پیش)
0 0
نه متاسفانه کار نکرد، مشکل اپدیت شدن رو دست کردم خط کد اشکال داشت ....الان فقط مونده اینکه با باز کردن اکتیوتی لیست مواردی که 1 هستن رو ستارش رو روشن نشون نمیده ! (9 سال پیش)
0 0
میشه اون قسمت از کد که مربوط به setAdapter و کلا پر کردن داده های آداپتر هست هم بذارین؟! شاید مشکل از اونجاس... مستقیم از روی دیتابیس پر میشه؟! (9 سال پیش)
پاسخ به سوال 
oMiD4gApp  9 سال پیش
0 0

این بخش:

 adapter = new AdapterApplication(G.application);
        list = (ListView) findViewById(R.id.list);
        G.application.clear();
        list.setAdapter(adapter);
        omid_method(0);


public static void omid_method(int start) {

String[] name = G.returnResult("varzesh", "name");

for (int i = start; i < name.length; i++) {

            StructApplication note = new StructApplication();
            note.name = name[i];

G.application.add(note);
        }
        adapter.notifyDataSetChanged();
}

 

 

0 0
خب اینجا باید note.isFavorite رو هم عدد بدید! اینطوری که همش صفره وقتی وارد اکتیویتی میشید همه ستاره ها خاموشه، پس برای چی روی دیتابیس ذخیره میکنین؟! همینجا بگین از روی دیتابیس بخونه و بریزه توی G.application نه اینکه داده مجازی بسازین... (9 سال پیش)
پاسخ به سوال 
oMiD4gApp  9 سال پیش
0 0

 سلام ممنون بخاطر وقتی که میذارید

من این کد رو زدم جواب نداد:/

 public static void omid_method(int start) {

        String[] name = G.returnResult("varzesh", "name");

Cursor cursor;
        for (int i = start; i < name.length; i++) {
            StructApplication note = new StructApplication();
            cursor = G.database.rawQuery("SELECT fav FROM varzesh", null);
            while (cursor.moveToNext()) {
                int x = cursor.getInt(cursor.getColumnIndex("fav"));
                if (x == 1) {
                    note.isFavorite = 1;
                }

            }
            note.name = name[i];
G.application.add(note);
        }
        adapter.notifyDataSetChanged();

 

0 0
این هیچ مشکلی نداره باید کار کنه! من چیز دیگه ای به ذهنم نمیرسه فقط پیشنهاد میدم جاهای مختلف Log بذارید تا دقیقا بفهمید کجای کد اجرا نمیشه و Log cat رو هم از نظر error و warning چک کنید... شاید از جای دیگس... شرمنده که نتونستم بیشتر ازین کمک کنم... (9 سال پیش)

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