简体   繁体   English

在recyclerView中显示来自SQLite DB Android的ArrayList

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM