سلام خدمت دوستان و استاد بزرگوار سال نو همگی مبارک
دوستان بنده در ساخت اداپتور به یه موردی برخوردم خواستم از شما هم سوال کنم که برای شما هم این طور هست یا نه
این که تو ساخت اداپتور وقتی یه کلاسی به نام اداپتور می سازیم و بعدش یه کلاس با نام 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