Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 尝试在sqlite中的空对象引用上调用虚拟方法_Android_Sqlite_Nullpointerexception - Fatal编程技术网

Android 尝试在sqlite中的空对象引用上调用虚拟方法

Android 尝试在sqlite中的空对象引用上调用虚拟方法,android,sqlite,nullpointerexception,Android,Sqlite,Nullpointerexception,您好,我是android新手,我正在尝试从sqlite检索数据并获取nullpointerreference..请帮助我 这是我的密码:- Databasehelper.java public class DatabaseHelper extends SQLiteOpenHelper{ private final static String DATABASE_NAME="Reminder_details.db"; private final static String TABLE

您好,我是android新手,我正在尝试从sqlite检索数据并获取
nullpointer
reference..请帮助我

这是我的密码:-

Databasehelper.java

public class DatabaseHelper extends SQLiteOpenHelper{
    private final static String DATABASE_NAME="Reminder_details.db";
    private final static String TABLE_NAME="Reminder_detail_insert_tbl";
    private final static String CAL_NO1="Category_img";
    private final static String CAL_NO2="Category_Type";
    private final static String CAL_NO3="Title";
    private final static String CAL_NO4="Description";
    private final static String CAL_NO5="Repeat_type";
    private final static String CAL_NO6="Repeat_value";
    private final static String CAL_NO7="sun_Remind";
    private final static String CAL_NO8="mon_remind";
    private final static String CAL_NO9="tue_remind";
    private final static String CAL_NO10="wed_remind";
    private final static String CAL_NO11="thu_remind";
    private final static String CAL_NO12="fri_remind";
    private final static String CAL_NO13="sat_remind";
    private final static String CAL_NO14="active_date";
    private final static String CAL_NO15="active_end_date";
    private final static String CAL_NO16="creation_date";

    public DatabaseHelper(Context context) {

        super(context, DATABASE_NAME, null, 1);

    }

    @Override
    public void onCreate(SQLiteDatabase db) {

        db.execSQL("Create Table " +TABLE_NAME +"(ID INTEGER PRIMARY KEY AUTOINCREMENT,Category_img BLOB,Category_Type TEXT,Title TEXT,Description TEXT,Repeat_type TEXT,Repeat_value INTEGER,sun_Remind TEXT,mon_remind TEXT,tue_remind TEXT,wed_remind TEXT,thu_remind TEXT,fri_remind TEXT,sat_remind TEXT,active_date TEXT,active_end_date TEXT,creation_date DATETIME DEFAULT CURRENT_TIMESTAMP)");

    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        db.execSQL("DROP TABLE IF EXISTS "+TABLE_NAME);
        onCreate(db);
    }


    public boolean DataInsert(
                    byte[] Category_img,
                    String Category_Type,
                    String Title,
                    String Description,
                    String Repeat_type,
                    int Repeat_value,
                    String sun_Remind,
                    String mon_Remind,
                    String tue_remind,
                    String wed_remind,
                    String thu_remind,
                    String fri_remind,
                    String sat_remind,
                    String active_date,
                    String active_end_date
        )
    {
        SQLiteDatabase db= getWritableDatabase();
        ContentValues cv=new ContentValues();
        cv.put(CAL_NO1,Category_img);
        cv.put(CAL_NO2,Category_Type);
        cv.put(CAL_NO3,Title);
        cv.put(CAL_NO4,Description);
        cv.put(CAL_NO5,Repeat_type);
        cv.put(CAL_NO6,Repeat_value);
        cv.put(CAL_NO7,sun_Remind);
        cv.put(CAL_NO8,mon_Remind);
        cv.put(CAL_NO9,tue_remind);
        cv.put(CAL_NO10,wed_remind);
        cv.put(CAL_NO11,thu_remind);
        cv.put(CAL_NO12,fri_remind);
        cv.put(CAL_NO13,sat_remind);
        cv.put(CAL_NO14,active_date);
        cv.put(CAL_NO15,active_end_date);


        long result=db.insert(TABLE_NAME,null,cv);

        if(result==-1)
            return false;
        else
            return true;


    }


    public Cursor getdata()
    {
        SQLiteDatabase db= getWritableDatabase();
        Cursor res=db.rawQuery("select * from "+TABLE_NAME,null);
        return res;
    }

}    
public class RecyclerAdapter extends RecyclerView.Adapter<RecyclerAdapter.ViewHolder>
{
    DatabaseHelper mydb;
    List<String> title_list,description_list;
    private String[] title ={"Timetable","Subjects","Faculty","Resources"};
    private String[] description={"description1","description2","description3","description4"};
    private int[] images={R.drawable.table,R.drawable.books,R.drawable.faculty,R.drawable.res};
//
//    public void getdatadb()
//    {
//
//
//        title_list=new ArrayList<String>();
//        description_list=new ArrayList<String>();
//
//
//        Cursor result=mydb.getdata();
//
//        if(result.getCount()==0)
//        {
//            return;
//        }else
//        {
//            while (result.moveToNext()){
//                title_list.add(result.getString(2));
//                description_list.add(result.getString(3));
//
//
//            }
//        }
//
//
//
//    }


    public class ViewHolder extends RecyclerView.ViewHolder{
        TextView mTextTile,mTextDescription;
        ImageView mImageview;

        public ViewHolder(View itemView)
        {
            super(itemView);
            mTextTile=(TextView)itemView.findViewById(R.id.tvmain);
            mTextDescription=(TextView)itemView.findViewById(R.id.tvdescription);
            mImageview=(ImageView)itemView.findViewById(R.id.ivmain);

            itemView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    int position=getAdapterPosition();
                    String text=mTextTile.getText().toString();
                    Snackbar.make(v,"Click Detected onItem "+position+" Item :"+text,Snackbar.LENGTH_LONG).setAction("Action",null).show();
                }
            });

        }
    }


    @Override
    public RecyclerAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType)
    {
        View view= LayoutInflater.from(parent.getContext()).inflate(R.layout.cardview_layout,parent,false);
        ViewHolder viewHolder=new ViewHolder(view);


        title_list=new ArrayList<String>();
        description_list=new ArrayList<String>();


        Cursor result=mydb.getdata();

        while (result.moveToNext()){
            title_list.add(result.getString(2));
            description_list.add(result.getString(3));
        }
        return viewHolder;
    }

    @Override
    public void onBindViewHolder(RecyclerAdapter.ViewHolder holder, int position)
    {
        holder.mTextTile.setText(title_list.get(position));
        holder.mTextDescription.setText(description_list.get(position));
        holder.mImageview.setImageResource(images[position]);
    }

    @Override
    public int getItemCount() {
        return title.length;
    }

}
这是RecyclerAdaptor,用于在运行时从表中获取数据。请在此帮助我

在这个recycleradaptor中,我从表中获取数据时出错

cursorresult=mydb.getdata()在这一行中,我遇到了错误

RecyclerAdaptor.java

public class DatabaseHelper extends SQLiteOpenHelper{
    private final static String DATABASE_NAME="Reminder_details.db";
    private final static String TABLE_NAME="Reminder_detail_insert_tbl";
    private final static String CAL_NO1="Category_img";
    private final static String CAL_NO2="Category_Type";
    private final static String CAL_NO3="Title";
    private final static String CAL_NO4="Description";
    private final static String CAL_NO5="Repeat_type";
    private final static String CAL_NO6="Repeat_value";
    private final static String CAL_NO7="sun_Remind";
    private final static String CAL_NO8="mon_remind";
    private final static String CAL_NO9="tue_remind";
    private final static String CAL_NO10="wed_remind";
    private final static String CAL_NO11="thu_remind";
    private final static String CAL_NO12="fri_remind";
    private final static String CAL_NO13="sat_remind";
    private final static String CAL_NO14="active_date";
    private final static String CAL_NO15="active_end_date";
    private final static String CAL_NO16="creation_date";

    public DatabaseHelper(Context context) {

        super(context, DATABASE_NAME, null, 1);

    }

    @Override
    public void onCreate(SQLiteDatabase db) {

        db.execSQL("Create Table " +TABLE_NAME +"(ID INTEGER PRIMARY KEY AUTOINCREMENT,Category_img BLOB,Category_Type TEXT,Title TEXT,Description TEXT,Repeat_type TEXT,Repeat_value INTEGER,sun_Remind TEXT,mon_remind TEXT,tue_remind TEXT,wed_remind TEXT,thu_remind TEXT,fri_remind TEXT,sat_remind TEXT,active_date TEXT,active_end_date TEXT,creation_date DATETIME DEFAULT CURRENT_TIMESTAMP)");

    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        db.execSQL("DROP TABLE IF EXISTS "+TABLE_NAME);
        onCreate(db);
    }


    public boolean DataInsert(
                    byte[] Category_img,
                    String Category_Type,
                    String Title,
                    String Description,
                    String Repeat_type,
                    int Repeat_value,
                    String sun_Remind,
                    String mon_Remind,
                    String tue_remind,
                    String wed_remind,
                    String thu_remind,
                    String fri_remind,
                    String sat_remind,
                    String active_date,
                    String active_end_date
        )
    {
        SQLiteDatabase db= getWritableDatabase();
        ContentValues cv=new ContentValues();
        cv.put(CAL_NO1,Category_img);
        cv.put(CAL_NO2,Category_Type);
        cv.put(CAL_NO3,Title);
        cv.put(CAL_NO4,Description);
        cv.put(CAL_NO5,Repeat_type);
        cv.put(CAL_NO6,Repeat_value);
        cv.put(CAL_NO7,sun_Remind);
        cv.put(CAL_NO8,mon_Remind);
        cv.put(CAL_NO9,tue_remind);
        cv.put(CAL_NO10,wed_remind);
        cv.put(CAL_NO11,thu_remind);
        cv.put(CAL_NO12,fri_remind);
        cv.put(CAL_NO13,sat_remind);
        cv.put(CAL_NO14,active_date);
        cv.put(CAL_NO15,active_end_date);


        long result=db.insert(TABLE_NAME,null,cv);

        if(result==-1)
            return false;
        else
            return true;


    }


    public Cursor getdata()
    {
        SQLiteDatabase db= getWritableDatabase();
        Cursor res=db.rawQuery("select * from "+TABLE_NAME,null);
        return res;
    }

}    
public class RecyclerAdapter extends RecyclerView.Adapter<RecyclerAdapter.ViewHolder>
{
    DatabaseHelper mydb;
    List<String> title_list,description_list;
    private String[] title ={"Timetable","Subjects","Faculty","Resources"};
    private String[] description={"description1","description2","description3","description4"};
    private int[] images={R.drawable.table,R.drawable.books,R.drawable.faculty,R.drawable.res};
//
//    public void getdatadb()
//    {
//
//
//        title_list=new ArrayList<String>();
//        description_list=new ArrayList<String>();
//
//
//        Cursor result=mydb.getdata();
//
//        if(result.getCount()==0)
//        {
//            return;
//        }else
//        {
//            while (result.moveToNext()){
//                title_list.add(result.getString(2));
//                description_list.add(result.getString(3));
//
//
//            }
//        }
//
//
//
//    }


    public class ViewHolder extends RecyclerView.ViewHolder{
        TextView mTextTile,mTextDescription;
        ImageView mImageview;

        public ViewHolder(View itemView)
        {
            super(itemView);
            mTextTile=(TextView)itemView.findViewById(R.id.tvmain);
            mTextDescription=(TextView)itemView.findViewById(R.id.tvdescription);
            mImageview=(ImageView)itemView.findViewById(R.id.ivmain);

            itemView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    int position=getAdapterPosition();
                    String text=mTextTile.getText().toString();
                    Snackbar.make(v,"Click Detected onItem "+position+" Item :"+text,Snackbar.LENGTH_LONG).setAction("Action",null).show();
                }
            });

        }
    }


    @Override
    public RecyclerAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType)
    {
        View view= LayoutInflater.from(parent.getContext()).inflate(R.layout.cardview_layout,parent,false);
        ViewHolder viewHolder=new ViewHolder(view);


        title_list=new ArrayList<String>();
        description_list=new ArrayList<String>();


        Cursor result=mydb.getdata();

        while (result.moveToNext()){
            title_list.add(result.getString(2));
            description_list.add(result.getString(3));
        }
        return viewHolder;
    }

    @Override
    public void onBindViewHolder(RecyclerAdapter.ViewHolder holder, int position)
    {
        holder.mTextTile.setText(title_list.get(position));
        holder.mTextDescription.setText(description_list.get(position));
        holder.mImageview.setImageResource(images[position]);
    }

    @Override
    public int getItemCount() {
        return title.length;
    }

}
公共类RecyclerAdapter扩展了RecyclerView.Adapter { 数据库助手mydb; 清单标题清单、说明清单; 私有字符串[]title={“时间表”、“科目”、“教员”、“资源”}; 私有字符串[]description={“description1”、“description2”、“description3”、“description4”}; private int[]images={R.drawable.table,R.drawable.books,R.drawable.faculty,R.drawable.res}; // //public void getdatadb() // { // // //title_list=new ArrayList(); //description_list=new ArrayList(); // // //游标结果=mydb.getdata(); // //if(result.getCount()==0) // { //返回; //}其他 // { //while(result.moveToNext()){ //title_list.add(result.getString(2)); //description_list.add(result.getString(3)); // // // } // } // // // // } 公共类ViewHolder扩展了RecyclerView.ViewHolder{ text查看mTextTile,mTextDescription; 图像视图; 公共视图持有者(视图项视图) { 超级(项目视图); mTextTile=(TextView)itemView.findviewbyd(R.id.tvmain); mTextDescription=(TextView)itemView.findViewById(R.id.tvdescription); mImageview=(ImageView)itemView.findViewById(R.id.ivmain); itemView.setOnClickListener(新视图.OnClickListener(){ @凌驾 公共void onClick(视图v){ int position=getAdapterPosition(); 字符串text=mTextTile.getText().toString(); Snackbar.make(v,“点击按钮”+position+”项:“+text,Snackbar.LENGTH_LONG”).setAction(“Action”,null.show(); } }); } } @凌驾 public RecyclerAdapter.ViewHolder onCreateViewHolder(视图组父级,int-viewType) { View-View=LayoutFlater.from(parent.getContext()).flate(R.layout.cardview\u布局,parent,false); ViewHolder ViewHolder=新的ViewHolder(视图); title_list=new ArrayList(); description_list=new ArrayList(); 游标结果=mydb.getdata(); while(result.moveToNext()){ title_list.add(result.getString(2)); description_list.add(result.getString(3)); } 返回视图持有者; } @凌驾 BindViewHolder上的公共无效(RecyclerAdapter.ViewHolder,int位置) { holder.mTextTile.setText(title_list.get(position)); holder.mTextDescription.setText(description_list.get(position)); holder.mImageview.setImageResource(图像[位置]); } @凌驾 public int getItemCount(){ 返回title.length; } }
的“onCreateViewHolder()”
开头添加此行:

因此,您的方法如下:

@Override
public CustomAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType)
{
    mydb = new DatabaseHelper(parent.getContext());
    View view= LayoutInflater.from(parent.getContext()).inflate(R.layout.cardview_layout,parent,false);
    ViewHolder viewHolder=new ViewHolder(view);


    title_list=new ArrayList<String>();
    description_list=new ArrayList<String>();


    Cursor result=mydb.getdata();

    while (result.moveToNext()){
        title_list.add(result.getString(2));
        description_list.add(result.getString(3));
    }
    return viewHolder;
}
@覆盖
public CustomAdapter.ViewHolder onCreateViewHolder(视图组父级,int-viewType)
{
mydb=newDatabaseHelper(parent.getContext());
View-View=LayoutFlater.from(parent.getContext()).flate(R.layout.cardview\u布局,parent,false);
ViewHolder ViewHolder=新的ViewHolder(视图);
title_list=new ArrayList();
description_list=new ArrayList();
游标结果=mydb.getdata();
while(result.moveToNext()){
title_list.add(result.getString(2));
description_list.add(result.getString(3));
}
返回视图持有者;
}

在此发布您的错误MyDB未初始化谢谢您解决了我的问题…我可以知道为什么我们需要添加这一行吗?请您解释一下。因此,将来我可能会遇到此类问题。您需要初始化“Database Helper”以访问数据库方法。谢谢,如果您需要更多信息,请告诉我。