Java 无法在ArrayAdapter上解析构造函数
我在subjects表中添加了值,但无法使用ListView检索这些值 我的代码:Java 无法在ArrayAdapter上解析构造函数,java,android,sqlite,Java,Android,Sqlite,我在subjects表中添加了值,但无法使用ListView检索这些值 我的代码: DatabaseHelper.java public class DatabaseHelper extends SQLiteOpenHelper { SQLiteDatabase db; public static final String DATABASE_NAME = "myexam.db"; public static final int DATABASE_VERSION = 1;
DatabaseHelper.java
public class DatabaseHelper extends SQLiteOpenHelper {
SQLiteDatabase db;
public static final String DATABASE_NAME = "myexam.db";
public static final int DATABASE_VERSION = 1;
public DatabaseHelper(Context context) {
super(context,DATABASE_NAME, null, DATABASE_VERSION);
Log.d("Database operations", "Database successfully created!");
}
@Override
public void onCreate(SQLiteDatabase db) {
String CREATE_USER = "CREATE TABLE " +
user.TABLE_USER + "(" +
user.USER_ID + " INTEGER PRIMARY KEY NOT NULL," +
user.USER_EMAIL + " VARCHAR NOT NULL," +
user.USER_PASS + " VARCHAR NOT NULL," +
user.USER_CPASS + " VARCHAR NOT NULL);";
String CREATE_SUBJECT = "CREATE TABLE " +
subject.TABLE_SUBJECT + "(" +
subject.USER_ID + " INTEGER," +
subject.SUBUSER_ID + " INTEGER PRIMARY KEY NOT NULL," +
subject.SUBJECT_NAME + " TEXT NOT NULL," +
subject.SUBJECT_RESULTS + " TEXT NOT NULL," +
subject.SUBJECT_HOURS + " TEXT NOT NULL);";
db.execSQL(CREATE_USER);
db.execSQL(CREATE_SUBJECT);
Log.d("Database operations", "Table created!");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS " + user.TABLE_USER);
db.execSQL("DROP TABLE IF EXISTS " + subject.TABLE_SUBJECT);
onCreate(db);
}
//insert User
public boolean insertUser(String uid, String email, String pass, String cpass) {
SQLiteDatabase db = this.getWritableDatabase();
ContentValues cv = new ContentValues();
cv.put(user.USER_ID, uid);
cv.put(user.USER_EMAIL, email);
cv.put(user.USER_PASS, pass);
cv.put(user.USER_CPASS, cpass);
long user_id = db.insert(user.TABLE_USER, null, cv);
if (user_id == -1){
return false;
}else
return true;
}
//get User
public Cursor getUser(){
SQLiteDatabase db = this.getReadableDatabase();
String selectQuery = "SELECT "+ user.USER_ID + ", " + user.USER_PASS + " FROM " + user.TABLE_USER;
Cursor c = db.rawQuery(selectQuery, null);
return c;
}
//insert Subjects
public boolean insertSubjects(String uid, String sname, String sresults, String shours) {
SQLiteDatabase db = this.getWritableDatabase();
ContentValues cv = new ContentValues();
cv.put(subject.SUBUSER_ID, uid);
cv.put(subject.SUBJECT_NAME, sname);
cv.put(subject.SUBJECT_RESULTS, sresults);
cv.put(subject.SUBJECT_HOURS, shours);
long sub_id = db.insert(subject.TABLE_SUBJECT, null, cv);
if (sub_id == -1){
return false;
}else
return true;
}
public Cursor getSubjects(){
SQLiteDatabase db = this.getReadableDatabase();
String selectQuery = "SELECT "+ subject.SUBUSER_ID +
", " + subject.SUBJECT_NAME +
", " + subject.SUBJECT_RESULTS +
", " + subject.SUBJECT_HOURS +
" FROM " + subject.TABLE_SUBJECT +
" WHERE " + subject.SUBUSER_ID +
" = " + subject.USER_ID;
Cursor c = db.rawQuery(selectQuery, null);
return c;
}
}
public class user {
public static final String USER_ID = "etID";
public static final String USER_EMAIL = "etEmail";
public static final String USER_PASS = "etPassword";
public static final String USER_CPASS = "etCPassword";
public static final String TABLE_USER = "user";
}
public class addSubjects extends AppCompatActivity {
EditText etUID, etSubjects, etResults, etHours;
DatabaseHelper databaseHelper;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_add_subjects);
etUID = (EditText)findViewById(R.id.etUID);
etSubjects = (EditText)findViewById(R.id.etSubjects);
etResults = (EditText)findViewById(R.id.etResults);
etHours = (EditText)findViewById(R.id.etHours);
databaseHelper = new DatabaseHelper(this);
ActionBar actionBar = getSupportActionBar();
actionBar.setHomeButtonEnabled(true);
actionBar.setDisplayHomeAsUpEnabled(true);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_add_subjects, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
if(id == android.R.id.home){
Intent i = new Intent(this, subjects.class);
startActivity(i);
finish();
}
//noinspection SimplifiableIfStatement
if (id == R.id.action_home) {
Intent i = new Intent(this, Menus.class);
startActivity(i);
finish();
}
return super.onOptionsItemSelected(item);
}
public void SaveInfo(View view){
String userid = etUID.getText().toString();
String subjects = etSubjects.getText().toString();
String results = etResults.getText().toString();
String hours = etHours.getText().toString();
if(userid.equals("") || subjects.equals("") || results.equals("") || hours.equals("")){
Toast.makeText(addSubjects.this, "Please key in all the information", Toast.LENGTH_SHORT).show();
}
else if((!results.equals("A")) && (!results.equals("B")) && (!results.equals("C")) && (!results.equals("D")) && (!results.equals("F"))){
Toast.makeText(getBaseContext(), "Please key in valid results!", Toast.LENGTH_SHORT).show();
}
else if((!hours.equals("One")) && (!hours.equals("Two")) && (!hours.equals("Three")) && (!hours.equals("Four"))){
Toast.makeText(getBaseContext(), "Please key in valid hours!", Toast.LENGTH_SHORT).show();
}
else{
boolean isInserted = databaseHelper.insertSubjects(userid, subjects, results, hours);
if(isInserted = true){
Toast.makeText(addSubjects.this, "Added Successfully!!!", Toast.LENGTH_SHORT).show();
Intent i = new Intent(this, subjects.class);
startActivity(i);
finish();
}else{
Toast.makeText(addSubjects.this, "Unsuccessfully added!!!", Toast.LENGTH_SHORT).show();
}
}
}
}
package com.smartexamorganizer.ListData;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.TextView;
import com.smartexamorganizer.R;
import java.util.ArrayList;
import java.util.List;
/**
* Created by Acer on 12/18/2015.
*/
public class ListDataAdapter extends ArrayAdapter {
List list = new ArrayList();
public ListDataAdapter(Context context, int resource) {
super(context, resource);
}
static class LayoutHandler{
TextView SUB_NAME, SUB_RESULTS, SUB_HOURS;
}
@Override
public void add(Object object) {
super.add(object);
list.add(object);
}
@Override
public int getCount() {
return list.size();
}
@Override
public Object getItem(int position) {
return list.get(position);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View row = convertView;
LayoutHandler layoutHandler;
if(row == null){
LayoutInflater layoutInflater = (LayoutInflater)this.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
row = layoutInflater.inflate(R.layout.display_subjects_row, parent, false);
layoutHandler = new LayoutHandler();
layoutHandler.SUB_NAME = (TextView)row.findViewById(R.id.tvSub_Name);
layoutHandler.SUB_RESULTS = (TextView)row.findViewById(R.id.tvSub_Results);
layoutHandler.SUB_HOURS = (TextView)row.findViewById(R.id.tvSub_Hours);
row.setTag(layoutHandler);
}
else{
layoutHandler = (LayoutHandler)row.getTag();
}
SubjectProvider subjectProvider = (SubjectProvider) this.getItem(position);
layoutHandler.SUB_NAME.setText(subjectProvider.getSub_name());
layoutHandler.SUB_RESULTS.setText(subjectProvider.getSub_results());
layoutHandler.SUB_HOURS.setText(subjectProvider.getSub_hours());
return row;
}
}
public class SubjectProvider {
private String sub_name;
private String sub_results;
private String sub_hours;
public SubjectProvider(String sub_name, String sub_results, String sub_hours){
this.sub_name = sub_name;
this.sub_results = sub_results;
this.sub_hours = sub_hours;
}
public String getSub_hours() {
return sub_hours;
}
public void setSub_hours(String sub_hours) {
this.sub_hours = sub_hours;
}
public String getSub_name() {
return sub_name;
}
public void setSub_name(String sub_name) {
this.sub_name = sub_name;
}
public String getSub_results() {
return sub_results;
}
public void setSub_results(String sub_results) {
this.sub_results = sub_results;
}
}
subject.java
public class subject {
public static final String SUBUSER_ID = "etUID";
public static final String USER_ID = user.USER_ID;
public static final String SUBJECT_NAME = "etSubjects";
public static final String SUBJECT_RESULTS = "etResults";
public static final String SUBJECT_HOURS = "etHours";
public static final String TABLE_SUBJECT = "subjects";
}
user.java
public class DatabaseHelper extends SQLiteOpenHelper {
SQLiteDatabase db;
public static final String DATABASE_NAME = "myexam.db";
public static final int DATABASE_VERSION = 1;
public DatabaseHelper(Context context) {
super(context,DATABASE_NAME, null, DATABASE_VERSION);
Log.d("Database operations", "Database successfully created!");
}
@Override
public void onCreate(SQLiteDatabase db) {
String CREATE_USER = "CREATE TABLE " +
user.TABLE_USER + "(" +
user.USER_ID + " INTEGER PRIMARY KEY NOT NULL," +
user.USER_EMAIL + " VARCHAR NOT NULL," +
user.USER_PASS + " VARCHAR NOT NULL," +
user.USER_CPASS + " VARCHAR NOT NULL);";
String CREATE_SUBJECT = "CREATE TABLE " +
subject.TABLE_SUBJECT + "(" +
subject.USER_ID + " INTEGER," +
subject.SUBUSER_ID + " INTEGER PRIMARY KEY NOT NULL," +
subject.SUBJECT_NAME + " TEXT NOT NULL," +
subject.SUBJECT_RESULTS + " TEXT NOT NULL," +
subject.SUBJECT_HOURS + " TEXT NOT NULL);";
db.execSQL(CREATE_USER);
db.execSQL(CREATE_SUBJECT);
Log.d("Database operations", "Table created!");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS " + user.TABLE_USER);
db.execSQL("DROP TABLE IF EXISTS " + subject.TABLE_SUBJECT);
onCreate(db);
}
//insert User
public boolean insertUser(String uid, String email, String pass, String cpass) {
SQLiteDatabase db = this.getWritableDatabase();
ContentValues cv = new ContentValues();
cv.put(user.USER_ID, uid);
cv.put(user.USER_EMAIL, email);
cv.put(user.USER_PASS, pass);
cv.put(user.USER_CPASS, cpass);
long user_id = db.insert(user.TABLE_USER, null, cv);
if (user_id == -1){
return false;
}else
return true;
}
//get User
public Cursor getUser(){
SQLiteDatabase db = this.getReadableDatabase();
String selectQuery = "SELECT "+ user.USER_ID + ", " + user.USER_PASS + " FROM " + user.TABLE_USER;
Cursor c = db.rawQuery(selectQuery, null);
return c;
}
//insert Subjects
public boolean insertSubjects(String uid, String sname, String sresults, String shours) {
SQLiteDatabase db = this.getWritableDatabase();
ContentValues cv = new ContentValues();
cv.put(subject.SUBUSER_ID, uid);
cv.put(subject.SUBJECT_NAME, sname);
cv.put(subject.SUBJECT_RESULTS, sresults);
cv.put(subject.SUBJECT_HOURS, shours);
long sub_id = db.insert(subject.TABLE_SUBJECT, null, cv);
if (sub_id == -1){
return false;
}else
return true;
}
public Cursor getSubjects(){
SQLiteDatabase db = this.getReadableDatabase();
String selectQuery = "SELECT "+ subject.SUBUSER_ID +
", " + subject.SUBJECT_NAME +
", " + subject.SUBJECT_RESULTS +
", " + subject.SUBJECT_HOURS +
" FROM " + subject.TABLE_SUBJECT +
" WHERE " + subject.SUBUSER_ID +
" = " + subject.USER_ID;
Cursor c = db.rawQuery(selectQuery, null);
return c;
}
}
public class user {
public static final String USER_ID = "etID";
public static final String USER_EMAIL = "etEmail";
public static final String USER_PASS = "etPassword";
public static final String USER_CPASS = "etCPassword";
public static final String TABLE_USER = "user";
}
public class addSubjects extends AppCompatActivity {
EditText etUID, etSubjects, etResults, etHours;
DatabaseHelper databaseHelper;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_add_subjects);
etUID = (EditText)findViewById(R.id.etUID);
etSubjects = (EditText)findViewById(R.id.etSubjects);
etResults = (EditText)findViewById(R.id.etResults);
etHours = (EditText)findViewById(R.id.etHours);
databaseHelper = new DatabaseHelper(this);
ActionBar actionBar = getSupportActionBar();
actionBar.setHomeButtonEnabled(true);
actionBar.setDisplayHomeAsUpEnabled(true);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_add_subjects, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
if(id == android.R.id.home){
Intent i = new Intent(this, subjects.class);
startActivity(i);
finish();
}
//noinspection SimplifiableIfStatement
if (id == R.id.action_home) {
Intent i = new Intent(this, Menus.class);
startActivity(i);
finish();
}
return super.onOptionsItemSelected(item);
}
public void SaveInfo(View view){
String userid = etUID.getText().toString();
String subjects = etSubjects.getText().toString();
String results = etResults.getText().toString();
String hours = etHours.getText().toString();
if(userid.equals("") || subjects.equals("") || results.equals("") || hours.equals("")){
Toast.makeText(addSubjects.this, "Please key in all the information", Toast.LENGTH_SHORT).show();
}
else if((!results.equals("A")) && (!results.equals("B")) && (!results.equals("C")) && (!results.equals("D")) && (!results.equals("F"))){
Toast.makeText(getBaseContext(), "Please key in valid results!", Toast.LENGTH_SHORT).show();
}
else if((!hours.equals("One")) && (!hours.equals("Two")) && (!hours.equals("Three")) && (!hours.equals("Four"))){
Toast.makeText(getBaseContext(), "Please key in valid hours!", Toast.LENGTH_SHORT).show();
}
else{
boolean isInserted = databaseHelper.insertSubjects(userid, subjects, results, hours);
if(isInserted = true){
Toast.makeText(addSubjects.this, "Added Successfully!!!", Toast.LENGTH_SHORT).show();
Intent i = new Intent(this, subjects.class);
startActivity(i);
finish();
}else{
Toast.makeText(addSubjects.this, "Unsuccessfully added!!!", Toast.LENGTH_SHORT).show();
}
}
}
}
package com.smartexamorganizer.ListData;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.TextView;
import com.smartexamorganizer.R;
import java.util.ArrayList;
import java.util.List;
/**
* Created by Acer on 12/18/2015.
*/
public class ListDataAdapter extends ArrayAdapter {
List list = new ArrayList();
public ListDataAdapter(Context context, int resource) {
super(context, resource);
}
static class LayoutHandler{
TextView SUB_NAME, SUB_RESULTS, SUB_HOURS;
}
@Override
public void add(Object object) {
super.add(object);
list.add(object);
}
@Override
public int getCount() {
return list.size();
}
@Override
public Object getItem(int position) {
return list.get(position);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View row = convertView;
LayoutHandler layoutHandler;
if(row == null){
LayoutInflater layoutInflater = (LayoutInflater)this.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
row = layoutInflater.inflate(R.layout.display_subjects_row, parent, false);
layoutHandler = new LayoutHandler();
layoutHandler.SUB_NAME = (TextView)row.findViewById(R.id.tvSub_Name);
layoutHandler.SUB_RESULTS = (TextView)row.findViewById(R.id.tvSub_Results);
layoutHandler.SUB_HOURS = (TextView)row.findViewById(R.id.tvSub_Hours);
row.setTag(layoutHandler);
}
else{
layoutHandler = (LayoutHandler)row.getTag();
}
SubjectProvider subjectProvider = (SubjectProvider) this.getItem(position);
layoutHandler.SUB_NAME.setText(subjectProvider.getSub_name());
layoutHandler.SUB_RESULTS.setText(subjectProvider.getSub_results());
layoutHandler.SUB_HOURS.setText(subjectProvider.getSub_hours());
return row;
}
}
public class SubjectProvider {
private String sub_name;
private String sub_results;
private String sub_hours;
public SubjectProvider(String sub_name, String sub_results, String sub_hours){
this.sub_name = sub_name;
this.sub_results = sub_results;
this.sub_hours = sub_hours;
}
public String getSub_hours() {
return sub_hours;
}
public void setSub_hours(String sub_hours) {
this.sub_hours = sub_hours;
}
public String getSub_name() {
return sub_name;
}
public void setSub_name(String sub_name) {
this.sub_name = sub_name;
}
public String getSub_results() {
return sub_results;
}
public void setSub_results(String sub_results) {
this.sub_results = sub_results;
}
}
addSubject.java
public class DatabaseHelper extends SQLiteOpenHelper {
SQLiteDatabase db;
public static final String DATABASE_NAME = "myexam.db";
public static final int DATABASE_VERSION = 1;
public DatabaseHelper(Context context) {
super(context,DATABASE_NAME, null, DATABASE_VERSION);
Log.d("Database operations", "Database successfully created!");
}
@Override
public void onCreate(SQLiteDatabase db) {
String CREATE_USER = "CREATE TABLE " +
user.TABLE_USER + "(" +
user.USER_ID + " INTEGER PRIMARY KEY NOT NULL," +
user.USER_EMAIL + " VARCHAR NOT NULL," +
user.USER_PASS + " VARCHAR NOT NULL," +
user.USER_CPASS + " VARCHAR NOT NULL);";
String CREATE_SUBJECT = "CREATE TABLE " +
subject.TABLE_SUBJECT + "(" +
subject.USER_ID + " INTEGER," +
subject.SUBUSER_ID + " INTEGER PRIMARY KEY NOT NULL," +
subject.SUBJECT_NAME + " TEXT NOT NULL," +
subject.SUBJECT_RESULTS + " TEXT NOT NULL," +
subject.SUBJECT_HOURS + " TEXT NOT NULL);";
db.execSQL(CREATE_USER);
db.execSQL(CREATE_SUBJECT);
Log.d("Database operations", "Table created!");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS " + user.TABLE_USER);
db.execSQL("DROP TABLE IF EXISTS " + subject.TABLE_SUBJECT);
onCreate(db);
}
//insert User
public boolean insertUser(String uid, String email, String pass, String cpass) {
SQLiteDatabase db = this.getWritableDatabase();
ContentValues cv = new ContentValues();
cv.put(user.USER_ID, uid);
cv.put(user.USER_EMAIL, email);
cv.put(user.USER_PASS, pass);
cv.put(user.USER_CPASS, cpass);
long user_id = db.insert(user.TABLE_USER, null, cv);
if (user_id == -1){
return false;
}else
return true;
}
//get User
public Cursor getUser(){
SQLiteDatabase db = this.getReadableDatabase();
String selectQuery = "SELECT "+ user.USER_ID + ", " + user.USER_PASS + " FROM " + user.TABLE_USER;
Cursor c = db.rawQuery(selectQuery, null);
return c;
}
//insert Subjects
public boolean insertSubjects(String uid, String sname, String sresults, String shours) {
SQLiteDatabase db = this.getWritableDatabase();
ContentValues cv = new ContentValues();
cv.put(subject.SUBUSER_ID, uid);
cv.put(subject.SUBJECT_NAME, sname);
cv.put(subject.SUBJECT_RESULTS, sresults);
cv.put(subject.SUBJECT_HOURS, shours);
long sub_id = db.insert(subject.TABLE_SUBJECT, null, cv);
if (sub_id == -1){
return false;
}else
return true;
}
public Cursor getSubjects(){
SQLiteDatabase db = this.getReadableDatabase();
String selectQuery = "SELECT "+ subject.SUBUSER_ID +
", " + subject.SUBJECT_NAME +
", " + subject.SUBJECT_RESULTS +
", " + subject.SUBJECT_HOURS +
" FROM " + subject.TABLE_SUBJECT +
" WHERE " + subject.SUBUSER_ID +
" = " + subject.USER_ID;
Cursor c = db.rawQuery(selectQuery, null);
return c;
}
}
public class user {
public static final String USER_ID = "etID";
public static final String USER_EMAIL = "etEmail";
public static final String USER_PASS = "etPassword";
public static final String USER_CPASS = "etCPassword";
public static final String TABLE_USER = "user";
}
public class addSubjects extends AppCompatActivity {
EditText etUID, etSubjects, etResults, etHours;
DatabaseHelper databaseHelper;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_add_subjects);
etUID = (EditText)findViewById(R.id.etUID);
etSubjects = (EditText)findViewById(R.id.etSubjects);
etResults = (EditText)findViewById(R.id.etResults);
etHours = (EditText)findViewById(R.id.etHours);
databaseHelper = new DatabaseHelper(this);
ActionBar actionBar = getSupportActionBar();
actionBar.setHomeButtonEnabled(true);
actionBar.setDisplayHomeAsUpEnabled(true);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_add_subjects, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
if(id == android.R.id.home){
Intent i = new Intent(this, subjects.class);
startActivity(i);
finish();
}
//noinspection SimplifiableIfStatement
if (id == R.id.action_home) {
Intent i = new Intent(this, Menus.class);
startActivity(i);
finish();
}
return super.onOptionsItemSelected(item);
}
public void SaveInfo(View view){
String userid = etUID.getText().toString();
String subjects = etSubjects.getText().toString();
String results = etResults.getText().toString();
String hours = etHours.getText().toString();
if(userid.equals("") || subjects.equals("") || results.equals("") || hours.equals("")){
Toast.makeText(addSubjects.this, "Please key in all the information", Toast.LENGTH_SHORT).show();
}
else if((!results.equals("A")) && (!results.equals("B")) && (!results.equals("C")) && (!results.equals("D")) && (!results.equals("F"))){
Toast.makeText(getBaseContext(), "Please key in valid results!", Toast.LENGTH_SHORT).show();
}
else if((!hours.equals("One")) && (!hours.equals("Two")) && (!hours.equals("Three")) && (!hours.equals("Four"))){
Toast.makeText(getBaseContext(), "Please key in valid hours!", Toast.LENGTH_SHORT).show();
}
else{
boolean isInserted = databaseHelper.insertSubjects(userid, subjects, results, hours);
if(isInserted = true){
Toast.makeText(addSubjects.this, "Added Successfully!!!", Toast.LENGTH_SHORT).show();
Intent i = new Intent(this, subjects.class);
startActivity(i);
finish();
}else{
Toast.makeText(addSubjects.this, "Unsuccessfully added!!!", Toast.LENGTH_SHORT).show();
}
}
}
}
package com.smartexamorganizer.ListData;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.TextView;
import com.smartexamorganizer.R;
import java.util.ArrayList;
import java.util.List;
/**
* Created by Acer on 12/18/2015.
*/
public class ListDataAdapter extends ArrayAdapter {
List list = new ArrayList();
public ListDataAdapter(Context context, int resource) {
super(context, resource);
}
static class LayoutHandler{
TextView SUB_NAME, SUB_RESULTS, SUB_HOURS;
}
@Override
public void add(Object object) {
super.add(object);
list.add(object);
}
@Override
public int getCount() {
return list.size();
}
@Override
public Object getItem(int position) {
return list.get(position);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View row = convertView;
LayoutHandler layoutHandler;
if(row == null){
LayoutInflater layoutInflater = (LayoutInflater)this.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
row = layoutInflater.inflate(R.layout.display_subjects_row, parent, false);
layoutHandler = new LayoutHandler();
layoutHandler.SUB_NAME = (TextView)row.findViewById(R.id.tvSub_Name);
layoutHandler.SUB_RESULTS = (TextView)row.findViewById(R.id.tvSub_Results);
layoutHandler.SUB_HOURS = (TextView)row.findViewById(R.id.tvSub_Hours);
row.setTag(layoutHandler);
}
else{
layoutHandler = (LayoutHandler)row.getTag();
}
SubjectProvider subjectProvider = (SubjectProvider) this.getItem(position);
layoutHandler.SUB_NAME.setText(subjectProvider.getSub_name());
layoutHandler.SUB_RESULTS.setText(subjectProvider.getSub_results());
layoutHandler.SUB_HOURS.setText(subjectProvider.getSub_hours());
return row;
}
}
public class SubjectProvider {
private String sub_name;
private String sub_results;
private String sub_hours;
public SubjectProvider(String sub_name, String sub_results, String sub_hours){
this.sub_name = sub_name;
this.sub_results = sub_results;
this.sub_hours = sub_hours;
}
public String getSub_hours() {
return sub_hours;
}
public void setSub_hours(String sub_hours) {
this.sub_hours = sub_hours;
}
public String getSub_name() {
return sub_name;
}
public void setSub_name(String sub_name) {
this.sub_name = sub_name;
}
public String getSub_results() {
return sub_results;
}
public void setSub_results(String sub_results) {
this.sub_results = sub_results;
}
}
subject.java
(ListView
)
ListDataAdapter.java
public class DatabaseHelper extends SQLiteOpenHelper {
SQLiteDatabase db;
public static final String DATABASE_NAME = "myexam.db";
public static final int DATABASE_VERSION = 1;
public DatabaseHelper(Context context) {
super(context,DATABASE_NAME, null, DATABASE_VERSION);
Log.d("Database operations", "Database successfully created!");
}
@Override
public void onCreate(SQLiteDatabase db) {
String CREATE_USER = "CREATE TABLE " +
user.TABLE_USER + "(" +
user.USER_ID + " INTEGER PRIMARY KEY NOT NULL," +
user.USER_EMAIL + " VARCHAR NOT NULL," +
user.USER_PASS + " VARCHAR NOT NULL," +
user.USER_CPASS + " VARCHAR NOT NULL);";
String CREATE_SUBJECT = "CREATE TABLE " +
subject.TABLE_SUBJECT + "(" +
subject.USER_ID + " INTEGER," +
subject.SUBUSER_ID + " INTEGER PRIMARY KEY NOT NULL," +
subject.SUBJECT_NAME + " TEXT NOT NULL," +
subject.SUBJECT_RESULTS + " TEXT NOT NULL," +
subject.SUBJECT_HOURS + " TEXT NOT NULL);";
db.execSQL(CREATE_USER);
db.execSQL(CREATE_SUBJECT);
Log.d("Database operations", "Table created!");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS " + user.TABLE_USER);
db.execSQL("DROP TABLE IF EXISTS " + subject.TABLE_SUBJECT);
onCreate(db);
}
//insert User
public boolean insertUser(String uid, String email, String pass, String cpass) {
SQLiteDatabase db = this.getWritableDatabase();
ContentValues cv = new ContentValues();
cv.put(user.USER_ID, uid);
cv.put(user.USER_EMAIL, email);
cv.put(user.USER_PASS, pass);
cv.put(user.USER_CPASS, cpass);
long user_id = db.insert(user.TABLE_USER, null, cv);
if (user_id == -1){
return false;
}else
return true;
}
//get User
public Cursor getUser(){
SQLiteDatabase db = this.getReadableDatabase();
String selectQuery = "SELECT "+ user.USER_ID + ", " + user.USER_PASS + " FROM " + user.TABLE_USER;
Cursor c = db.rawQuery(selectQuery, null);
return c;
}
//insert Subjects
public boolean insertSubjects(String uid, String sname, String sresults, String shours) {
SQLiteDatabase db = this.getWritableDatabase();
ContentValues cv = new ContentValues();
cv.put(subject.SUBUSER_ID, uid);
cv.put(subject.SUBJECT_NAME, sname);
cv.put(subject.SUBJECT_RESULTS, sresults);
cv.put(subject.SUBJECT_HOURS, shours);
long sub_id = db.insert(subject.TABLE_SUBJECT, null, cv);
if (sub_id == -1){
return false;
}else
return true;
}
public Cursor getSubjects(){
SQLiteDatabase db = this.getReadableDatabase();
String selectQuery = "SELECT "+ subject.SUBUSER_ID +
", " + subject.SUBJECT_NAME +
", " + subject.SUBJECT_RESULTS +
", " + subject.SUBJECT_HOURS +
" FROM " + subject.TABLE_SUBJECT +
" WHERE " + subject.SUBUSER_ID +
" = " + subject.USER_ID;
Cursor c = db.rawQuery(selectQuery, null);
return c;
}
}
public class user {
public static final String USER_ID = "etID";
public static final String USER_EMAIL = "etEmail";
public static final String USER_PASS = "etPassword";
public static final String USER_CPASS = "etCPassword";
public static final String TABLE_USER = "user";
}
public class addSubjects extends AppCompatActivity {
EditText etUID, etSubjects, etResults, etHours;
DatabaseHelper databaseHelper;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_add_subjects);
etUID = (EditText)findViewById(R.id.etUID);
etSubjects = (EditText)findViewById(R.id.etSubjects);
etResults = (EditText)findViewById(R.id.etResults);
etHours = (EditText)findViewById(R.id.etHours);
databaseHelper = new DatabaseHelper(this);
ActionBar actionBar = getSupportActionBar();
actionBar.setHomeButtonEnabled(true);
actionBar.setDisplayHomeAsUpEnabled(true);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_add_subjects, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
if(id == android.R.id.home){
Intent i = new Intent(this, subjects.class);
startActivity(i);
finish();
}
//noinspection SimplifiableIfStatement
if (id == R.id.action_home) {
Intent i = new Intent(this, Menus.class);
startActivity(i);
finish();
}
return super.onOptionsItemSelected(item);
}
public void SaveInfo(View view){
String userid = etUID.getText().toString();
String subjects = etSubjects.getText().toString();
String results = etResults.getText().toString();
String hours = etHours.getText().toString();
if(userid.equals("") || subjects.equals("") || results.equals("") || hours.equals("")){
Toast.makeText(addSubjects.this, "Please key in all the information", Toast.LENGTH_SHORT).show();
}
else if((!results.equals("A")) && (!results.equals("B")) && (!results.equals("C")) && (!results.equals("D")) && (!results.equals("F"))){
Toast.makeText(getBaseContext(), "Please key in valid results!", Toast.LENGTH_SHORT).show();
}
else if((!hours.equals("One")) && (!hours.equals("Two")) && (!hours.equals("Three")) && (!hours.equals("Four"))){
Toast.makeText(getBaseContext(), "Please key in valid hours!", Toast.LENGTH_SHORT).show();
}
else{
boolean isInserted = databaseHelper.insertSubjects(userid, subjects, results, hours);
if(isInserted = true){
Toast.makeText(addSubjects.this, "Added Successfully!!!", Toast.LENGTH_SHORT).show();
Intent i = new Intent(this, subjects.class);
startActivity(i);
finish();
}else{
Toast.makeText(addSubjects.this, "Unsuccessfully added!!!", Toast.LENGTH_SHORT).show();
}
}
}
}
package com.smartexamorganizer.ListData;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.TextView;
import com.smartexamorganizer.R;
import java.util.ArrayList;
import java.util.List;
/**
* Created by Acer on 12/18/2015.
*/
public class ListDataAdapter extends ArrayAdapter {
List list = new ArrayList();
public ListDataAdapter(Context context, int resource) {
super(context, resource);
}
static class LayoutHandler{
TextView SUB_NAME, SUB_RESULTS, SUB_HOURS;
}
@Override
public void add(Object object) {
super.add(object);
list.add(object);
}
@Override
public int getCount() {
return list.size();
}
@Override
public Object getItem(int position) {
return list.get(position);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View row = convertView;
LayoutHandler layoutHandler;
if(row == null){
LayoutInflater layoutInflater = (LayoutInflater)this.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
row = layoutInflater.inflate(R.layout.display_subjects_row, parent, false);
layoutHandler = new LayoutHandler();
layoutHandler.SUB_NAME = (TextView)row.findViewById(R.id.tvSub_Name);
layoutHandler.SUB_RESULTS = (TextView)row.findViewById(R.id.tvSub_Results);
layoutHandler.SUB_HOURS = (TextView)row.findViewById(R.id.tvSub_Hours);
row.setTag(layoutHandler);
}
else{
layoutHandler = (LayoutHandler)row.getTag();
}
SubjectProvider subjectProvider = (SubjectProvider) this.getItem(position);
layoutHandler.SUB_NAME.setText(subjectProvider.getSub_name());
layoutHandler.SUB_RESULTS.setText(subjectProvider.getSub_results());
layoutHandler.SUB_HOURS.setText(subjectProvider.getSub_hours());
return row;
}
}
public class SubjectProvider {
private String sub_name;
private String sub_results;
private String sub_hours;
public SubjectProvider(String sub_name, String sub_results, String sub_hours){
this.sub_name = sub_name;
this.sub_results = sub_results;
this.sub_hours = sub_hours;
}
public String getSub_hours() {
return sub_hours;
}
public void setSub_hours(String sub_hours) {
this.sub_hours = sub_hours;
}
public String getSub_name() {
return sub_name;
}
public void setSub_name(String sub_name) {
this.sub_name = sub_name;
}
public String getSub_results() {
return sub_results;
}
public void setSub_results(String sub_results) {
this.sub_results = sub_results;
}
}
SubjectProvider.java
public class DatabaseHelper extends SQLiteOpenHelper {
SQLiteDatabase db;
public static final String DATABASE_NAME = "myexam.db";
public static final int DATABASE_VERSION = 1;
public DatabaseHelper(Context context) {
super(context,DATABASE_NAME, null, DATABASE_VERSION);
Log.d("Database operations", "Database successfully created!");
}
@Override
public void onCreate(SQLiteDatabase db) {
String CREATE_USER = "CREATE TABLE " +
user.TABLE_USER + "(" +
user.USER_ID + " INTEGER PRIMARY KEY NOT NULL," +
user.USER_EMAIL + " VARCHAR NOT NULL," +
user.USER_PASS + " VARCHAR NOT NULL," +
user.USER_CPASS + " VARCHAR NOT NULL);";
String CREATE_SUBJECT = "CREATE TABLE " +
subject.TABLE_SUBJECT + "(" +
subject.USER_ID + " INTEGER," +
subject.SUBUSER_ID + " INTEGER PRIMARY KEY NOT NULL," +
subject.SUBJECT_NAME + " TEXT NOT NULL," +
subject.SUBJECT_RESULTS + " TEXT NOT NULL," +
subject.SUBJECT_HOURS + " TEXT NOT NULL);";
db.execSQL(CREATE_USER);
db.execSQL(CREATE_SUBJECT);
Log.d("Database operations", "Table created!");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS " + user.TABLE_USER);
db.execSQL("DROP TABLE IF EXISTS " + subject.TABLE_SUBJECT);
onCreate(db);
}
//insert User
public boolean insertUser(String uid, String email, String pass, String cpass) {
SQLiteDatabase db = this.getWritableDatabase();
ContentValues cv = new ContentValues();
cv.put(user.USER_ID, uid);
cv.put(user.USER_EMAIL, email);
cv.put(user.USER_PASS, pass);
cv.put(user.USER_CPASS, cpass);
long user_id = db.insert(user.TABLE_USER, null, cv);
if (user_id == -1){
return false;
}else
return true;
}
//get User
public Cursor getUser(){
SQLiteDatabase db = this.getReadableDatabase();
String selectQuery = "SELECT "+ user.USER_ID + ", " + user.USER_PASS + " FROM " + user.TABLE_USER;
Cursor c = db.rawQuery(selectQuery, null);
return c;
}
//insert Subjects
public boolean insertSubjects(String uid, String sname, String sresults, String shours) {
SQLiteDatabase db = this.getWritableDatabase();
ContentValues cv = new ContentValues();
cv.put(subject.SUBUSER_ID, uid);
cv.put(subject.SUBJECT_NAME, sname);
cv.put(subject.SUBJECT_RESULTS, sresults);
cv.put(subject.SUBJECT_HOURS, shours);
long sub_id = db.insert(subject.TABLE_SUBJECT, null, cv);
if (sub_id == -1){
return false;
}else
return true;
}
public Cursor getSubjects(){
SQLiteDatabase db = this.getReadableDatabase();
String selectQuery = "SELECT "+ subject.SUBUSER_ID +
", " + subject.SUBJECT_NAME +
", " + subject.SUBJECT_RESULTS +
", " + subject.SUBJECT_HOURS +
" FROM " + subject.TABLE_SUBJECT +
" WHERE " + subject.SUBUSER_ID +
" = " + subject.USER_ID;
Cursor c = db.rawQuery(selectQuery, null);
return c;
}
}
public class user {
public static final String USER_ID = "etID";
public static final String USER_EMAIL = "etEmail";
public static final String USER_PASS = "etPassword";
public static final String USER_CPASS = "etCPassword";
public static final String TABLE_USER = "user";
}
public class addSubjects extends AppCompatActivity {
EditText etUID, etSubjects, etResults, etHours;
DatabaseHelper databaseHelper;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_add_subjects);
etUID = (EditText)findViewById(R.id.etUID);
etSubjects = (EditText)findViewById(R.id.etSubjects);
etResults = (EditText)findViewById(R.id.etResults);
etHours = (EditText)findViewById(R.id.etHours);
databaseHelper = new DatabaseHelper(this);
ActionBar actionBar = getSupportActionBar();
actionBar.setHomeButtonEnabled(true);
actionBar.setDisplayHomeAsUpEnabled(true);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_add_subjects, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
if(id == android.R.id.home){
Intent i = new Intent(this, subjects.class);
startActivity(i);
finish();
}
//noinspection SimplifiableIfStatement
if (id == R.id.action_home) {
Intent i = new Intent(this, Menus.class);
startActivity(i);
finish();
}
return super.onOptionsItemSelected(item);
}
public void SaveInfo(View view){
String userid = etUID.getText().toString();
String subjects = etSubjects.getText().toString();
String results = etResults.getText().toString();
String hours = etHours.getText().toString();
if(userid.equals("") || subjects.equals("") || results.equals("") || hours.equals("")){
Toast.makeText(addSubjects.this, "Please key in all the information", Toast.LENGTH_SHORT).show();
}
else if((!results.equals("A")) && (!results.equals("B")) && (!results.equals("C")) && (!results.equals("D")) && (!results.equals("F"))){
Toast.makeText(getBaseContext(), "Please key in valid results!", Toast.LENGTH_SHORT).show();
}
else if((!hours.equals("One")) && (!hours.equals("Two")) && (!hours.equals("Three")) && (!hours.equals("Four"))){
Toast.makeText(getBaseContext(), "Please key in valid hours!", Toast.LENGTH_SHORT).show();
}
else{
boolean isInserted = databaseHelper.insertSubjects(userid, subjects, results, hours);
if(isInserted = true){
Toast.makeText(addSubjects.this, "Added Successfully!!!", Toast.LENGTH_SHORT).show();
Intent i = new Intent(this, subjects.class);
startActivity(i);
finish();
}else{
Toast.makeText(addSubjects.this, "Unsuccessfully added!!!", Toast.LENGTH_SHORT).show();
}
}
}
}
package com.smartexamorganizer.ListData;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.TextView;
import com.smartexamorganizer.R;
import java.util.ArrayList;
import java.util.List;
/**
* Created by Acer on 12/18/2015.
*/
public class ListDataAdapter extends ArrayAdapter {
List list = new ArrayList();
public ListDataAdapter(Context context, int resource) {
super(context, resource);
}
static class LayoutHandler{
TextView SUB_NAME, SUB_RESULTS, SUB_HOURS;
}
@Override
public void add(Object object) {
super.add(object);
list.add(object);
}
@Override
public int getCount() {
return list.size();
}
@Override
public Object getItem(int position) {
return list.get(position);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View row = convertView;
LayoutHandler layoutHandler;
if(row == null){
LayoutInflater layoutInflater = (LayoutInflater)this.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
row = layoutInflater.inflate(R.layout.display_subjects_row, parent, false);
layoutHandler = new LayoutHandler();
layoutHandler.SUB_NAME = (TextView)row.findViewById(R.id.tvSub_Name);
layoutHandler.SUB_RESULTS = (TextView)row.findViewById(R.id.tvSub_Results);
layoutHandler.SUB_HOURS = (TextView)row.findViewById(R.id.tvSub_Hours);
row.setTag(layoutHandler);
}
else{
layoutHandler = (LayoutHandler)row.getTag();
}
SubjectProvider subjectProvider = (SubjectProvider) this.getItem(position);
layoutHandler.SUB_NAME.setText(subjectProvider.getSub_name());
layoutHandler.SUB_RESULTS.setText(subjectProvider.getSub_results());
layoutHandler.SUB_HOURS.setText(subjectProvider.getSub_hours());
return row;
}
}
public class SubjectProvider {
private String sub_name;
private String sub_results;
private String sub_hours;
public SubjectProvider(String sub_name, String sub_results, String sub_hours){
this.sub_name = sub_name;
this.sub_results = sub_results;
this.sub_hours = sub_hours;
}
public String getSub_hours() {
return sub_hours;
}
public void setSub_hours(String sub_hours) {
this.sub_hours = sub_hours;
}
public String getSub_name() {
return sub_name;
}
public void setSub_name(String sub_name) {
this.sub_name = sub_name;
}
public String getSub_results() {
return sub_results;
}
public void setSub_results(String sub_results) {
this.sub_results = sub_results;
}
}
错误:
Error:(40, 45) error: no suitable constructor found for ArrayAdapter(subjects,int,ArrayList<SubjectProvider>)
constructor ArrayAdapter.ArrayAdapter(Context,int,int) is not applicable
(argument mismatch; ArrayList<SubjectProvider> cannot be converted to int)
constructor ArrayAdapter.ArrayAdapter(Context,int,String[]) is not applicable
(argument mismatch; ArrayList<SubjectProvider> cannot be converted to String[])
constructor ArrayAdapter.ArrayAdapter(Context,int,List<String>) is not applicable
(argument mismatch; ArrayList<SubjectProvider> cannot be converted to List<String>)
错误:(40,45)错误:找不到适合ArrayAdapter的构造函数(主题、int、ArrayList)
构造函数ArrayAdapter.ArrayAdapter(上下文,int,int)不适用
(参数不匹配;ArrayList无法转换为int)
构造函数ArrayAdapter.ArrayAdapter(上下文、int、字符串[])不适用
(参数不匹配;ArrayList无法转换为字符串[])
构造函数ArrayAdapter.ArrayAdapter(上下文、int、列表)不适用
(参数不匹配;ArrayList无法转换为List)
VARCHAR
非VARCAHR
:
更改:
到
并将数据库版本从1增加到2:
public static final int DATABASE_VERSION = 2;
试试这个:
// getSubjects() will now return a List of SubjectProviders
// as you can see below
public ArrayList<SubjectProvider> getSubjects(){
// obtain the database
SQLiteDatabase db = this.getReadableDatabase();
// create the query that should return name results and hours
// for each subject that has the subuser_id equal to the user_id
String selectQuery = "SELECT " + subject.SUBJECT_NAME +
", " + subject.SUBJECT_RESULTS +
", " + subject.SUBJECT_HOURS +
" FROM " + subject.TABLE_SUBJECT +
" WHERE " + subject.SUBUSER_ID +
" = " + subject.USER_ID;
// create the arraylist in which we will late store all the subjectproviders
// this arraylist will be returned so you can use it in your subjects class
ArrayList<SubjectProvider> subjectList = new ArrayList<SubjectProvider>()
// execute the select-query
Cursor c = db.rawQuery(selectQuery, null);
// if the cursor is not empty aka some at least one row was found
if (c.moveToFirst()) {
// loop through all the results
do {
System.out.println("Results were found!");
// get the values from the cursor
String sub_name, sub_results, sub_hours;
sub_name = cursor.getString(0);
sub_results = cursor.getString(1);
sub_hours = cursor.getString(2);
// create a new subjectprovider Object to store the values in it
SubjectProvider subjectProvider = new SubjectProvider(sub_name, sub_results, sub_hours);
System.out.println("Subject: "+sub_name+" got" +sub_results+" in "+sub_hours);
// add it to the arraylist
subjectList.add(subjectProvider);
// stop if there are no more results
} while (c.moveToNext());
}
// return the list to your subjects class
return subjectList;
}
在oncreate方法中,您拼错了varchar。@Nyxar oops!!!谢谢你,顺便说一句:你用好的用户id在数据库中插入用户了吗?@Dimitri我添加了1111 thn第二个目标是2222我只是尝试使用不同的id,这很简单,第一个与数据库版本有什么不同?要用它的表重新创建数据库,必须增加版本。见我的编辑谢谢!我变了!无论如何,你知道如何根据用户id列出所有数据吗?我在DatabaseHelper中的getSubjects上做错了吗?我只能插入一个值并检索一个值,没有任何错误,但当我插入另一个值时,它会自动关闭我的app>E/SQLiteLog﹕ (1555)在14英寸处中止[插入受试者(etResults,etours,etUID,etSubjects)值(?,?,?)]:唯一约束失败:subjects.etUID 12-18 21:28:13.021 22330-22330/com.smartexamorganizer E/SQLiteDatabase﹕ 插入etResults=C etHours=One etUID=1111 etSubjects=English android.database.sqlite.SQLiteConstraintException:唯一约束失败:subjects.etUID(代码1555)第一次添加uuid后,uuid已存在。第二个必须失败,因为uuid在android端没有更改,而且是我更改的主要字段!谢谢现在尝试用相同的代码解决另一个问题><插入主题后数据没有显示出来~尝试重新创建数据库。我认为您仍然能够创建subjects表,尽管用户给出了错误,现在您尝试插入已经存在的数据。这就是我用另一个数据库名发布代码的原因,它应该可以工作。不要忘记删除另一个。或者删除subjects表,然后再次尝试插入值,也应该插入worksubjects数据,但不能在listView中查看。。。我需要发布我的listView吗?哦,这样你就不会得到上面的错误了。好的,好的,是的,张贴你如何尝试插入值