我正在尝试使用ListView
数据库在主片段中创建sqlite
。
数据已插入数据库但无法在主片段中显示为ListView
。
这是我的java和xml文件....
Dbhelper.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;
}
}
ViewListContents.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 :(得分: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);
}
}