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

چگونه ایتم های ریسایکلر ویو را پر کنم ؟

kazemian  8 سال پیش  8 سال پیش
0 0

سلام بچه ها

من یه ریسایکلر ویو دارم که میخوام ایتم هاش رو با دیتابیس sqlite پر کنم
اما هرکاری میکنم خطای null pointer exeption میده

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

ممنون میشم کمکم کنید


 

کدهای اداپترم :

 
public class Adapter_rec_menu extends RecyclerView.Adapter<Adapter_rec_menu.ItemViewHolder> {

private Context context;
List<Menu_item> main_items;

public Adapter_rec_menu(Context context, List<Menu_item> main_items) {
this.context = context;
this.main_items = main_items;
}

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

View view2 = LayoutInflater.from(parent.getContext()).inflate(R.layout.rec_menu, parent, false);
return new ItemViewHolder(view2);
}

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

Menu_item main_item = main_items.get(position);
holder.txt_subject.setText(main_item.subject);
holder.txt_description.setText(main_item.description);

}

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

public class ItemViewHolder extends RecyclerView.ViewHolder {

private ImageView img_rec_menu;
private TextView txt_subject;
private TextView txt_description;
private RelativeLayout relativeLayout;
private ShineButton favirite_act_complete_category_2_recycler_linear_small;

public ItemViewHolder(View itemView) {
super(itemView);

img_rec_menu = (ImageView) itemView.findViewById(R.id.img_rec_menu);
relativeLayout = (RelativeLayout) itemView.findViewById(R.id.relative_rec_menu);
txt_subject = (TextView) itemView.findViewById(R.id.txt_rex_menu_subject);
txt_description = (TextView) itemView.findViewById(R.id.txt_rex_menu_description);


}
}
}




کدهایی که باهاش آرایه هام رو پر میکنم:

 
public class Frg_menu extends Fragment {

private database db;
private String[] subject;
private String[] description;
List<Menu_item> menu_items;

@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.frg_menu, container, false);

menu_items = new ArrayList<>();

refresh();
RecyclerView recyclerView = (RecyclerView) view.findViewById(R.id.rec_menu);
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(getContext());
recyclerView.setHasFixedSize(true);
recyclerView.setLayoutManager(linearLayoutManager);
recyclerView.setAdapter(new Adapter_rec_menu(getContext(), menu_items));


return view;
}

private void refresh() {
this.db.open();
int count = db.count();
subject = new String[count];
description = new String[count];

for (int i = 0; i < count; i++) {
Menu_item item = new Menu_item();
subject[i] = db.Display(i, 1);
description[i] = db.Display(i, 2);
item.subject = subject[i];
item.description = description[i];

menu_items.add(item);
}
this.db.close();
}

}
+1 0
کدهای آداپتر ریسایکلرویو و همینطور متن کامل خطایی که توی لاگ کت میگیری رو هم بذار (8 سال پیش)
+1 0
یه پیشنهاد : برای اینکه کدت خواناتر و زیباتر بشه به نظر من به جای اینکه مستقیما توی متد refresh لیستِ menu_items رو پر کنی بهتره متد refresh رو با یک پارامتر ورودی از نوع List (8 سال پیش)
+1 0
List items بنویسی و در لحظه صدا زدن متد ، فیلد menu_items رو به عنوان آرگومان ورودی بهش پاس بدی... (8 سال پیش)
0 0
پیشنهادتون خییییلی عالی بود ، الان همین کارو میکنم ، مرسییییی (8 سال پیش)
0 0
کدهای اداپتر و متن خطا رو به سوالم اضافه کردم (8 سال پیش)
+1 0
فک میکنم مشکل اینجاست که آبجکت db مقدار نداره و null هست (8 سال پیش)
+1 0
اصلاح میکنم : متغیرِ رفرنسِ db (8 سال پیش)
0 0
فکر نکنم null باشه ها ، چون اگه توی اکتیویتی بگم یک فیلد از دیتابیسم رو توی TextView نمایش بده قشنگ کار میکنه (8 سال پیش)
+1 0
پیشنهاد : چون از رفرنسِ context توی آداپترِ ریسایکلرویو هیچ استفاده ای نکردید بهترِ اون رو از لیست پارمترهای سازنده یِ ریسایکلرویو حذف کنید و فیلدی که این رفرنس رو نگه میداره رو هم پاک کنید..واسه یِ inflate کردن لایه های ریسایکلرویو ، همون parent.getContext کار رو راه میندازه (8 سال پیش)
0 0
اخه اون context رو بعدا میخوام باهاش کار کنم ، کارش دارم (8 سال پیش)
+1 0
در جواب اینکه گفتی فک نکنم نال باشه : یه فیلد DataBase db داری که هیچ جایی به هیچ آبجکتِ دیتابیسی وصلش نکردی و داری روش متدِ open صدا میزنی...واسه اینکه مطمعن شیم : خط 47 کلاس Frag_Menu کدومه؟ (8 سال پیش)
+1 0
ای واااااااای اره حق با شما بود ، فراموش کرده بودم new کنم . الان تست کردم درست کار کرد :)))) ، خییییییییییلی ممنونم از شما خیییلی بهم کمک کردین (8 سال پیش)
 برای این سوال پاسخی وجود ندارد.

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