0

Я хочу заполнить свой ListView данными из SQLiteDataBase, но у меня ошибка на моем курсоре. Я новичок в программировании в андроидах, пожалуйста, помогите. Благодарю. Я использую фрагменты. . это мой фрагмент кода:Ошибка в курсоре при получении данных из SQLiteDatabase

package com.android.jayzero2013.estudiante; 

import android.database.Cursor; 
import android.os.Bundle; 
import android.support.annotation.Nullable; 
import android.support.v4.app.Fragment; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.ListView; 
import android.widget.SimpleCursorAdapter; 

public class deleteSchedulePage extends Fragment { 
    private ListView listview; 
    scheduleDataBase mydb; 

    View viewPage; 
    @Nullable 
    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     viewPage= inflater.inflate(R.layout.delete_schedule_layout,container,false); 
     listview=(ListView)viewPage.findViewById(R.id.deleteSchedList); 
     return viewPage; 
    } 

    @Override 
    public void onActivityCreated(@Nullable Bundle savedInstanceState) { 
     super.onActivityCreated(savedInstanceState); 
     mydb=new scheduleDataBase(getActivity()); 

     getDb(); 
    } 

    public void getDb(){ 
      Cursor get = mydb.getalldata(); 
      String[] fields = new String[]{mydb.Col1, mydb.Col2}; 
      int[] textViewId = new int[]{R.id.itemNumTExt, R.id.SubjectCodeTextView}; 
      SimpleCursorAdapter myCursorAdapter; 
      myCursorAdapter = new SimpleCursorAdapter(getActivity().getBaseContext(), R.layout.sched_list, get, fields, textViewId, 0); 
      listview = (ListView) viewPage.findViewById(R.id.deleteSchedList); 
      listview.setAdapter(myCursorAdapter); 

     } 
} 

это мой код SQLiteDatabase:

package com.android.jayzero2013.estudiante; 

import android.content.ContentValues; 
import android.content.Context; 
import android.database.Cursor; 
import android.database.sqlite.SQLiteDatabase; 
import android.database.sqlite.SQLiteOpenHelper; 

/** 
* Created by jayzero2013 on 23/11/2015. 
*/ 
public class scheduleDataBase extends SQLiteOpenHelper { 

    public static final String Database_Name="Schedule.db"; 
    public static final String Table_Name="My_Schedule"; 
    public static final String Col1="Number"; 
    public static final String Col2="Subject_Code"; 
    public static final String Col3="Subject_Description"; 
    public static final String Col4="Type"; 
    public static final String Col5="Room"; 
    public static final String Col6="Day"; 
    public static final String Col7="TimeStart"; 
    public static final String Col8="TimeEnd"; 

    private SQLiteDatabase db; 

    public static final String [] ALL_KEYS=new String[]{Col1, Col2}; 


    public scheduleDataBase(Context context) { 

     super(context, Database_Name, null, 1); 
    } 

    @Override 
    public void onCreate(SQLiteDatabase sqLiteDatabase) { 
     sqLiteDatabase.execSQL("create table " + Table_Name + " (" + 
       Col1 + " INTEGER PRIMARY KEY AUTOINCREMENT, " + 
       Col2 + " TEXT NOT NULL, " + Col3 + " TEXT, " + 
       Col4 + " TEXT NOT NULL, " + Col5 + " TEXT, " + 
       Col6 + " TEXT NOT NULL, " + Col7 + " TEXT NOT NULL, " + 
       Col8 + " TEXT NOT NULL)"); 
    } 

    @Override 
    public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) { 
     sqLiteDatabase.execSQL("DROP TABLE IF EXISTS " + Table_Name); 
     onCreate(sqLiteDatabase); 
    } 

    public boolean insertData(String sbjCD, String sbjDsc, String room, String typ, String day, String tymstrt, String tymnd){ 
     SQLiteDatabase sqLiteDatabase=this.getReadableDatabase(); 
     ContentValues content=new ContentValues(); 
     content.put(Col2, sbjCD); 
     content.put(Col3, sbjDsc); 
     content.put(Col4, typ); 
     content.put(Col5, room); 
     content.put(Col6, day); 
     content.put(Col7, tymstrt); 
     content.put(Col8, tymnd); 

     long result=sqLiteDatabase.insert(Table_Name, null, content); 
     if(result==-1){ 
      return false; 
     } 
     else{ 
      return true; 
     } 
    } 

    public Cursor getalldata(){ 
     String where= null; 
     Cursor c=db.query(true, Table_Name, ALL_KEYS,where,null,null,null,null,null); 
     if(c!=null){ 
      c.moveToFirst(); 
     } 
     return c; 
    } 


} 

это сообщение об ошибке от LogCat:

11-27 23:57:52.758 10346-10346/com.android.jayzero2013.estudiante E/AndroidRuntime﹕ FATAL EXCEPTION: main 
    java.lang.NullPointerException 
      at com.android.jayzero2013.estudiante.scheduleDataBase.getalldata(scheduleDataBase.java:76) 
      at com.android.jayzero2013.estudiante.deleteSchedulePage.getDb(deleteSchedulePage.java:42) 
      at com.android.jayzero2013.estudiante.deleteSchedulePage.onActivityCreated(deleteSchedulePage.java:37) 
      at android.support.v4.app.Fragment.performActivityCreated(Fragment.java:1973) 
      at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1103) 
      at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1259) 
      at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:738) 
      at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1624) 
      at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:517) 
      at android.os.Handler.handleCallback(Handler.java:725) 
      at android.os.Handler.dispatchMessage(Handler.java:92) 
      at android.os.Looper.loop(Looper.java:137) 
      at android.app.ActivityThread.main(ActivityThread.java:5041) 
      at java.lang.reflect.Method.invokeNative(Native Method) 
      at java.lang.reflect.Method.invoke(Method.java:511) 
      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) 
      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) 
      at dalvik.system.NativeStart.main(Native Method) 
+0

Эти ответы не помогают моей ситуации –

+0

Можете ли вы дать мне URL-адрес дубликата этого вопроса. Позвольте мне это прочитать –

ответ

0

Ваш объект БД имеет нулевое значение, прежде чем вы используйте его, вы должны позвонить по этому адресу:

db = getWriteabledatabase(); 
Смежные вопросы