رفتن به مطلب
انجمن اندروید ایران | آموزش برنامه نویسی اندروید و موبایل
  • android.png.1fab383bc8500cd93127cebc65b1dcab.png

مشکل در لایک در دیتابیس آنلاین


پست های پیشنهاد شده

با سلام و درود خدمت همکاران عزیز

دوستان بنده در حال ساخت یه برنامه ای بودم که در قسمت لایک مشکل دارم

من اومدم  شماره سریال گوشی ها رو گرفتم و یه مقدار تضادفی هم بهش دادمو به سرور میفرستم و ذخیره میشه (چون شماره سریال هر گوشی متفاوته و اینجوری هرکسی میتونه برنامه رو با یوزر خودش لایک کنه)

مشکل من وقتی به وجود میاد وقتی من دکمه هر پستی تو ریسایکلر ویو رو لایک میکنم تا رو دکمه دریافت دوباره از سرور نزنم  اون دکمه لایک نمیخوره

میخواستم بدونم چجوری میشه اول دکمه به طور نمایشی لایک بخوره بعد در فرصتی پشت پرده به سرور انتقال داده بشه

 

ممنون میشم کمک کنید یا اگه روشی بلدید یه توضیح مختصر بدید ممنون میشم

لینک ارسال
به اشتراک گذاری در سایت های دیگر

اون استادی که فقط بلده دکمه فشار بده

لطفا به جایه فشار دادن دکمه بیا منبع رو ذکر کن ببین چنین چیزی جورد داره یا از خودت داری میگی

من آشنا به قوانین سایتم ولی کل سایتو گشتم ولی چنین موضوعی رو ندید اگه شما بزرگوار میگی هست لطفا آدرس بده ما هم ببینیم

با تشکر 

 

لینک ارسال
به اشتراک گذاری در سایت های دیگر

مقدار لایکو حتما داری دیگه که نشونش دادی . مطمئنا داخل INT ذخیره شده . برای نمایشی شدنش کافیه ++ کنیش .

 

ویرایش شده توسط Seyed-Hossein-Akbari
لینک ارسال
به اشتراک گذاری در سایت های دیگر

مشکل تو فایل phpیا در سورس اندروید استودیو                    نبود
مشکل بنده تو ریفریش ریساکلر بود (باید به گونه ای ریفریش میشد خیلی سریع و بدون اینکه کاربر بفهمه)خدا رو شکر بعد 3ساعت تلاش پیدا کردم

 

لینک ارسال
به اشتراک گذاری در سایت های دیگر

NOTIFYDATASETCHANGE برای به روز رسانی آداپتر استفاده میشه .

و اینکه من نمیدونم چطور کد نوشتید . اما اصلا نیازی نیست به روز بشه :)

ویرایش شده توسط Seyed-Hossein-Akbari
لینک ارسال
به اشتراک گذاری در سایت های دیگر

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

در ضمن کدهای پیش پا افتاده ؟؟؟؟؟

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

لینک ارسال
به اشتراک گذاری در سایت های دیگر

خوب بزرگوار اگه نیاز به روز کردن نباشه پس از کجا باید اطلاعاتو بگیر که کاربر اطلاعاتو لایک کرده یا خیر ؟

خوب ببین منم دکمه لایکو به وسیله اطلاعات آداپتر لایک و آنلاک میکنم تا اینجا درست ولی قبلش باید  تو قسمت onBindViewHolder ریسایکلر باید چک بکنم که آیا این دکمه از قبل تو دیتابیس لایک شده یا خیر

درضم بنده گفتم که این کد notifyDataSetChanged که برای ریفرش اطلاعات هست در این قسمت به دردم نمیخوره و میدونم همین که خودش خیلی کار برده :dodgy:

 

در ضم شما که میگید نیاز به آپدیت نداره یه نگاه بنداز به کد ببنید نیازی هست به نظرتون آپدیت بشه یا نه

حالا بفرمایید چجوری من لایک کنم که نیاز به بروز شدن نداشته باشه               :5917111a9dd66_emoticon(4):


public class CustomAdp_RecyMain extends RecyclerView.Adapter<CustomAdp_RecyMain.ViewHolder> {
    List<Data_recycler> listData = new ArrayList<>();


    Activity context;
    LikeButton likeButton;
    ImageView copyText,shareTextAndpic;
    G g=new G();
    Boolean favcheek=false;
    int ii;

    public CustomAdp_RecyMain(List<Data_recycler> listData, Activity context) {
        this.listData = listData;
        this.context = context;
    }


    @NonNull
    @Override
    public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {

        View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.sample_item_recycler, parent, false);
        ViewHolderAfraz viewHolder = new ViewHolderAfraz(v);
        return viewHolder;


    }

    @Override
    public void onBindViewHolder(@NonNull final ViewHolderAfraz holder, final int position) {

       // G.useridcheek =G.list.get(holder.getAdapterPosition()).getUserid();


    holder.onvan.setText(listData.get(position).getOnvan());
    holder.matn.setText(listData.get(position).getMatn());

    String s = listData.get(position).getImgAdress();

    Picasso.with(context).load(s).error(R.drawable.ic_launcher_background).into(holder.imgadress);
    holder.matn.setText(listData.get(position).getMatn());
    holder.onvan.setText(listData.get(position).getOnvan());
    holder.matn.setText(listData.get(position).getMatn());




    String usercek = G.list.get(position).getUserid();
    Log.e("usercek", G.list.get(ii).getUserid());
    favcheek = usercek.contains("|" + G.UserId);
    Log.e("ceek11111", String.valueOf(favcheek));
    //Log.e("position", String.valueOf(position));

    likeButton.setLiked(true);

    if (favcheek == false) {
        likeButton.setLikeDrawable(context.getResources().getDrawable(R.drawable.ic_favoff_24dp));
        //likeButton.setLiked(false);
    } else if (favcheek == true) {
        likeButton.setLikeDrawable(context.getResources().getDrawable(R.drawable.ic_favon_24dp));

    }



    }


    @Override
    public int getItemCount() {
        return listData.size();
    }




    public class ViewHolder extends RecyclerView.ViewHolder {
        TextView onvan, matn, tbleghat;
        ImageView imgadress;

        public ViewHolder(final View itemView) {
            super(itemView);
            onvan = (TextView) itemView.findViewById(R.id.text_onvan_recycler);
            matn = (TextView) itemView.findViewById(R.id.text_matn_recycler);
            imgadress = (ImageView) itemView.findViewById(R.id.img_onvan_recycler);
            likeButton =(LikeButton)itemView.findViewById(R.id.Like_fav_recycler);
            copyText=(ImageView)itemView.findViewById(R.id.img_copy_recycler);
            shareTextAndpic=(ImageView)itemView.findViewById(R.id.img_share_recycler);



            likeButton.setOnLikeListener(new OnLikeListener() {
                @Override
                public void liked(LikeButton likeButton1) {
                    likeButton1.setLikeDrawable(context.getResources().getDrawable(R.drawable.ic_favon_24dp));
                    final Updeta_fav_online updeta_fav_online;
                    updeta_fav_online=new Updeta_fav_online("http://192.168.....1...0/........j.php",context,getAdapterPosition());
                    updeta_fav_online.Updeta_favha();


                }

                @Override
                public void unLiked(LikeButton likeButton1) {
                    likeButton1.setLikeDrawable(context.getResources().getDrawable(R.drawable.ic_favoff_24dp));
                    final Updeta_fav_online updeta_fav_online;
                    updeta_fav_online=new Updeta_fav_online("http://192.168.1...0/...........php",context,getAdapterPosition());
                    updeta_fav_online.Updeta_favha();
                }
            });



            copyText.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    AriaLib ariaLib=new AriaLib(context);
                    ariaLib.Sharing().setClipboadText(G.list.get(getAdapterPosition()).getMatn());
                    Toast.makeText(context, "درکیبورد کپی شد", Toast.LENGTH_SHORT).show();

                }
            });

           












    }












 


 
لینک ارسال
به اشتراک گذاری در سایت های دیگر

الان همین کد کار به روز رسانی رو انجام میده دیگه .

                    likeButton1.setLikeDrawable(context.getResources().getDrawable(R.drawable.ic_favoff_24dp));

شما داخل کلیک هر چی بنویسی انجام میشه . تصویر عوض میشه . یه مقداری عوض میشه و ...

دیگه نیازی به ، به روز رسانی آداپتر نیست .

حالا شما بفرمایید چطوری به روز کردید ؟

اصلا چرا کلیک رو داخل ویوهولدر نوشتی ؟ باید داخل همون  onbind بنویسی .

ویرایش شده توسط Seyed-Hossein-Akbari
لینک ارسال
به اشتراک گذاری در سایت های دیگر

دوست عزیز من مشکلم با کلیک کردن ندارم که ده:dodgy:

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

خوب در رابطه با دکمه لایک هم باید بگم مگه زیاد فرقی هم داره اینجوری تست کردم جواب بهتر میاد

 

لینک ارسال
به اشتراک گذاری در سایت های دیگر

اع :| . خب مگه اطلاعاتو از وب نمیگیری ؟ وقتی اطلاعاتو داری از وب میگیری هر بار که اداپتر رفرش بشه اطلاعات رو میگیره دوباره :| .

بعدشم viewholder از اسمش معلومه . ویو رو نگه میداره ... و هر بار که داره لیست رو میسازه از روی هولدر میسازه . اینطوری که کد نوشتید سرعت برنامه و لیست میاد پایین ....

کدهای کلیک و هر چیزی باید داخل onbind نوشته بشه .

 

لینک ارسال
به اشتراک گذاری در سایت های دیگر

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

در ضم بنده به دلیل برخی مثال نمیتونم تو قسمت onbind  قرارش بدم  

لینک ارسال
به اشتراک گذاری در سایت های دیگر

من ، نمیدونم . روش کد نویسیت خیلی بده . دیگه خودت میدونی ...

این روش اصلا استاندارد نیست .

حتی اینستگرام هم اینکاری که شما میکنی رو نمیکنه .

وقتی ترافیک سایتت با هزاران لایکی که در ثانیه داره صورت میگیره بره بالا . میفهمی چرا استاندارد نیست .

موفق باشی

ویرایش شده توسط Seyed-Hossein-Akbari
لینک ارسال
به اشتراک گذاری در سایت های دیگر

به گفتگو بپیوندید

هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .

مهمان
ارسال پاسخ به این موضوع...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به صورت لینک

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.

×
×
  • اضافه کردن...