2017-05-03 20 views
-1

sqliteデータベースでメインフラグメント内にListViewを作成しようとしています。 データはすでにデータベースに挿入されていますが、メインフラグメントにはListViewと表示されません。 ここに私のJavaやXMLファイルはViewListContents.javaフラグメント内にリストビューを表示できません

package jarvis.medicinereminder.database; 

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

import jarvis.medicinereminder.MainActivity; 

public class DbHelper extends SQLiteOpenHelper { 
    public static final String DATABASE_NAME = "reminder.db"; 
    public static final String TABLE_NAME = "reminder_table"; 
    public static final String COL1 = "ID"; 
    public static final String COL2 = "NAME"; 
    public static final String COL3 = "TIME"; 
    public static final String COL4 = "DATE"; 

    public DbHelper(MainActivity context){ 
     super(context,DATABASE_NAME,null,1); 
    } 

    @Override 
    public void onCreate(SQLiteDatabase db){ 

     String createTable = "CREATE TABLE " + TABLE_NAME + " (ID INTEGER PRIMARY KEY AUTOINCREMENT, " +"NAME TEXT," + 
       " " +"TIME TEXT, " +"DATE TEXT) "; 
     db.execSQL(createTable); 
    } 

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

    public boolean addData (String name, String time, String date){ 
     SQLiteDatabase db = this.getWritableDatabase(); 
     ContentValues contentValues = new ContentValues(); 
     contentValues.put(COL2, name); 
     contentValues.put(COL3, time); 
     contentValues.put(COL4, date); 

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

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

    public Cursor getListContents(){ 
     SQLiteDatabase db = this.getWritableDatabase(); 
     Cursor data = db.rawQuery("SELECT * FROM " + TABLE_NAME, null); 
     return data; 
    } 
} 

....

Dbhelper.java

package jarvis.medicinereminder.database; 

import android.database.Cursor; 
import android.os.Bundle; 
import android.support.annotation.Nullable; 
import android.support.v7.app.AppCompatActivity; 
import android.widget.ArrayAdapter; 
import android.widget.ListAdapter; 
import android.widget.ListView; 
import android.widget.Toast; 
import java.util.ArrayList; 
import jarvis.medicinereminder.R; 

public class ViewListContents extends AppCompatActivity { 

    DbHelper myDB; 

    @Override 
    protected void onCreate(@Nullable Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.fragment_main); 

     ListView listView = (ListView)findViewById(R.id.listView); 
     //myDB = new DbHelper(this); 

     ArrayList<String> theList = new ArrayList<>(); 
     Cursor data = myDB.getListContents(); 

     while (data.moveToNext()){ 
      theList.add(data.getString(1)); 
      ListAdapter listAdapter = new ArrayAdapter<>(this,android.R.layout.simple_list_item_1,theList); 
      listView.setAdapter(listAdapter); 
     } 
    } 
} 

fragment_main.xml

<?xml version="1.0" encoding="utf-8"?> 
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" android:layout_height="match_parent"> 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:textAppearance="?android:attr/textAppearanceLarge" 
     android:text="Main" 
     android:id="@+id/textView2" 
     android:layout_gravity="center" /> 

    <ListView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:id="@+id/listView" 
     android:layout_gravity="center" /> 
</FrameLayout> 
+0

Null Pointerの例外が発生しない理由を知りたいと思っています。 myDBはnullであるため – Rahul

答えて

1

このmyDB = new DbHelper(this);でのコメントを外してください。 oncreate()

@Override 
    protected void onCreate(@Nullable Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.fragment_main); 

     ListView listView = (ListView)findViewById(R.id.listView); 
     myDB = new DbHelper(this); 

     ArrayList<String> theList = new ArrayList<>(); 
     Cursor data = myDB.getListContents(); 

     while (data.moveToNext()){ 
      theList.add(data.getString(1)); 
      ListAdapter listAdapter = new ArrayAdapter<>(this,android.R.layout.simple_list_item_1,theList); 
      listView.setAdapter(listAdapter); 
     } 
    } 
関連する問題