[英]Display ArrayList from SQLite DB Android in recyclerView
When i try to display ArrayList
in recyclerview
I have NullPointerExeption
, I checked to display Arraylist
in Logs and it work well, i think my mistake is in RecyclerViewAdapter
. 当我尝试在recyclerview
显示ArrayList
,我有NullPointerExeption
,我检查了要在Logs中显示Arraylist
,并且运行良好,我认为我的错误是在RecyclerViewAdapter
。 So please help me find my mistake and explain 所以请帮我找出错误并解释
My method in DB to create Arraylist
: 我在DB中创建Arraylist
:
public List<Cards> getData(){
List<Cards> list = new ArrayList<>();
SQLiteDatabase sqLiteDatabase= helper.getWritableDatabase();
Cursor cursor= sqLiteDatabase.rawQuery(helper.QUERY,null);
while (cursor.moveToNext()){
int index0=cursor.getColumnIndex(helper.UID);
int index1=cursor.getColumnIndex(helper.KEY_NAME);
int index2=cursor.getColumnIndex(helper.KEY_VALUE);
int index3=cursor.getColumnIndex(helper.KEY_FORMAT);
int index4=cursor.getColumnIndex(helper.KEY_COUNTRY);
int cid = cursor.getInt(index0);
String name = cursor.getString(index1);
String value = cursor.getString(index2);
String format = cursor.getString(index3);
String country = cursor.getString(index4);
Cards cards = new Cards(cid,name,value,format,country);
list.add(cards);
}
return list;
}
Cards is my getter & setter class, Cards是我的getter&setter类,
RecyclerViewAdapter: RecyclerViewAdapter:
public class RecycleViewAdapter extends RecyclerView.Adapter<RecycleViewAdapter.MyViewHolder> {
private static final String TAG = "recyclerViewAdapter";
private List<Cards> items;
private int itemLayout;
public RecycleViewAdapter(List<Cards> items, int itemLayout) {
this.items = items;
this.itemLayout= itemLayout;
}
@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view=LayoutInflater.from(parent.getContext()).inflate(itemLayout,parent,false);
return new MyViewHolder(view);
}
@Override
public void onBindViewHolder(MyViewHolder holder, int position) {
Cards item=items.get(position);
holder.title.setText(item.getName());
}
@Override
public int getItemCount() {
return items.size();
}
public static class MyViewHolder extends RecyclerView.ViewHolder{
TextView title;
public MyViewHolder(View itemView) {
super(itemView);
title= (TextView) itemView.findViewById(R.id.listText);
}
}
`MyCardsFragment` , where i have `recyclerView`:
public class MyCardsFragment extends Fragment {
public DataBaseAdapter data;
private static final String TAG = "MyApp";
private RecyclerView recyclerView;
DataBaseAdapter dataBaseHelper;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_my_cards, container, false);
recyclerView = (RecyclerView) view.findViewById(R.id.recycleView);
recyclerView.setHasFixedSize(true);
recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
recyclerView.setItemAnimator(new DefaultItemAnimator());
recyclerView.setAdapter(new RecycleViewAdapter(dataBaseHelper.getData(),R.layout.custom_row));
return view;
}
}
NullPointerExeption
is on NullPointerExeption
已开启
recyclerView.setAdapter(newrecycleViewAdapter(dataBaseHelper.getData(),R.layout.custom_row))
; recyclerView.setAdapter(newrecycleViewAdapter(dataBaseHelper.getData(),R.layout.custom_row))
;
Forget to initialize dataBaseHelper
before using to call getData()
method from DataBaseAdapter
class: 在用于从DataBaseAdapter
类调用getData()
方法之前,请忘记初始化dataBaseHelper
:
dataBaseHelper=new DataBaseAdapter(...); //<<< initialize here
recyclerView.setAdapter(new RecycleViewAdapter(
dataBaseHelper.getData(),R.layout.custom_row));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.