💻 آخرین فرصت یادگیری برنامه‌نویسی با آفر ویژه قبل از افزایش قیمت در ۱۵ آذر ماه (🎁 به همراه یک هدیه ارزشمند )
۰ ثانیه
۰ دقیقه
۰ ساعت
۵ سالار غیور کلیبر
سوال در مورد ساخت اداپتور
جامعه جاوا (اندروید) ایجاد شده در ۰۵ فروردین ۱۳۹۹

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

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

این که تو ساخت اداپتور وقتی یه کلاسی به نام اداپتور می‌سازیم و بعدش یه کلاس با نام ViweHolder  و نهایتا یه تا متد تو اداپتور impelimen می‌کنیم تو اون پارامتر‌های وردی قبلاً تو متد اول یکی بود int Viwetype که الان برای من میاره int i یعنی عوض Viwetype میاره i و تو قسمت onbiond یه پارامتری بود با نام int position که باز به جای position میاره i که قبلا درک موضوع از این نظر که int مربوط به چیه بهتر بود الان خواستم سوال کنم برای شما هم این طور هست یا برای بنده است فکر کنم بعد از آپدیت این موضوع پیش آمده ممنون می‌شم استاد هم نظری دارن بفرمایند شاید بنده یه جایی رو اشتباه می‌رم که این طور می‌شه ولی مثل اموزش پیش می‌رم.

 

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

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

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

بنظر من به قسمت زیر توجه ویژه داشته باش که اشتباه ننوشته باشی به عنوان مثال:

extends RecyclerView.Adapter<StudentRecyclerViewAdapter.StudentViewHolder>

در<> باید ابتدا نام کلاس و سپس نام ViewHolder ساخته شده نوشته و سپس implement کنید .

اگر منظور شما رو بد متوجه شدم ممنون میشم عکسی ارسال کنید.

public class StudentRecyclerViewAdapter extends RecyclerView.Adapter<StudentRecyclerViewAdapter.StudentViewHolder> {
  محل قرار گیری اری لیست
  public StudentRecyclerViewAdapter(پارامتر مورد نظر ){
    this.students=students;
  }
  @NonNull
  @Override
  public StudentViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
    return new StudentViewHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.item_student,parent,false));
  }
  @Override
  public void onBindViewHolder(@NonNull StudentViewHolder holder, int position) {
    holder.bindItem(students.get(position));
  }
  @Override
  public int getItemCount() {
    return students.size();
  }
  public void addStudent(Student student){
    this.students.add(0,student);
    notifyItemInserted(0);
  }
  public class StudentViewHolder extends RecyclerView.ViewHolder{
    TextView txt_char;
    TextView txt_fullname;
    TextView txt_course;
    TextView txt_top;
    public StudentViewHolder(@NonNull View itemView) {
      super(itemView);
      فایند کردن ایتم ها
    }
    public void bindItem(محل قرار گیری پارامتر ها){
      ست کردن 
    }
  }
}

 

پوریا شفیعی ۰۵ فروردین ۱۳۹۹، ۰۷:۳۸

نه درست رفتم انگار ولی منظور بنده اون جایی هست که تو پارامتر وردوی متد oncreatViweHolder نوشته int ViweType برای من نوشته int i و اونجا که نوشته int position باز برای من نوشته int i نمی‌دونم اشکال کار کجاست؟
یکی هم این که پوریا جان من سه روز هست درگیر همین ریسایکلر ویو هستم از این سایت داخلی یا خارجی به اون سایت خلاصه یه کم خسته شدم این که برای خیلی از کدها انگار باید تقلیدی جلو بریم وقت می‌شه برای یه سوال ساده ساعت‌ها می‌گردم شاید خیلی از دوستان به راحتی قبول می‌کنند و رد می‌شن و همین جور تقلیدی پیش می‌رن ولی برای من تو یه ویدیوی سی دقیقه ای شاید ده تا سوال پیش میاد که تا یک یک رو جواب پیدا نکنم اذیت می‌شم همین جور تقلید پیش برم تو تلگرام به استاد آوند هم پیام دادم که اگر گروهی می‌بود خیلی خوب می‌شد شاید دوستان کمک می‌کردند
خلاصه خیلی خسته شدم مثلا می‌گم چرا inflate باید بکنیم و setcontantViwe نمی‌کنیم اصلا میرم دنبال inflate می‌گردم که به جه کار میاد و ... خیلی علاقه داشتم شماره شما رو داشته باشم می‌تونم حداقل تو برخی مواقع تبادل نظر بکنم ولی شما خیلی از من جلو هستید من از آموزش‌ها عقب افتادم یه محتوا رو شاید چند بار ببینم باز از نو ... عکس می‌فرستم برات از اون قسمتی که می‌گم 

سالار غیور کلیبر ۰۵ فروردین ۱۳۹۹، ۰۸:۴۸
package com.example.myapplication15;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
public class ContactsAdapter extends RecyclerView.Adapter<ContactsAdapter.ViweHolder> {
    @NonNull
    @Override
    public ViweHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
        return new ViweHolder();
    }
    @Override
    public void onBindViewHolder(@NonNull ViweHolder viweHolder, int i) {
    }
    @Override
    public int getItemCount() {
        return 0;
    }
    public class ViweHolder extends RecyclerView.ViewHolder {
        private TextView fullnameTv;
        public ViweHolder(@NonNull View itemView) {
            super(itemView);
            fullnameTv = itemView.findViewById(R.id.full_nameTv);
        }
        public void bindContact(String fullname){
            fullnameTv.setText(fullname);
        }
    }
}

 

سالار غیور کلیبر ۰۵ فروردین ۱۳۹۹، ۰۸:۵۱

سالار جان 

مشکل رو فکر کنم متوجه شدم که کجاست شما ابتدا کلاس اداپتر رو میسازی و extend میکنی ولی داخل <> چیزی نمینویسی سپس داخل کلاس اداپتور کلاس ویو هولدر ولی با یه نام دیگه مثلا StudentViewHolder میسازی و بعد کانستراکتورشو ایمپلیمنت میکنیم و سپس میایم داخل <> و مینویسیم ContactsAdapter.StudentViweHolder

و سپس متد هاشو ایمپلیمن میکنیم 

چون اگر نام کلاس ویو هولدر رو خود ویو هولدر بسیازیم ممکنه بخاطر شباهت پکیج نیم هایی که هست شما اشتباه پکیج نیم رو انتخاب کنی پس همچین کارو انجام بده ببین مشکلت حل میشه یا خیر .

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

شماره تماسم : تماس

پیام بدی جواب میدم خوشحال میشم.

موفق باشی.

پوریا شفیعی ۰۵ فروردین ۱۳۹۹، ۰۹:۲۴

نشد برادر باز یکی با نام Test برای کلاس ویوهولدر ساخت نشد حتی اون قسمتی که هست که باید به صورت ViweGruop parent باشه برای من میاره ViweGroup viwegroup

 

 

سالار غیور کلیبر ۰۵ فروردین ۱۳۹۹، ۰۹:۳۴