DatabaseHelper.java:
package com.example.yourapp;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
public class DatabaseHelper extends SQLiteOpenHelper {
private static final String DATABASE_NAME = "words.db";
private static final int DATABASE_VERSION = 1;
public static final String TABLE_WORDS = "words";
public static final String COLUMN_ID = "id";
public static final String COLUMN_ENGLISH = "english";
public static final String COLUMN_SYMBOL = "symbol";
public static final String COLUMN_CHINESE = "chinese";
private static final String TABLE_CREATE =
"CREATE TABLE " + TABLE_WORDS + " (" +
COLUMN_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
COLUMN_ENGLISH + " NVARCHAR(50), " +
COLUMN_SYMBOL + " NVARCHAR(50), " +
COLUMN_CHINESE + " NVARCHAR(50));";
public DatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(TABLE_CREATE);
// 插入一些单词
db.execSQL("INSERT INTO " + TABLE_WORDS + " (" + COLUMN_ENGLISH + ", " + COLUMN_SYMBOL + ", " + COLUMN_CHINESE + ") VALUES ('apple', '[ˈæpəl]', '苹果');");
db.execSQL("INSERT INTO " + TABLE_WORDS + " (" + COLUMN_ENGLISH + ", " + COLUMN_SYMBOL + ", " + COLUMN_CHINESE + ") VALUES ('banana', '[bəˈnænə]', '香蕉');");
// 添加更多单词
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS " + TABLE_WORDS);
onCreate(db);
}
}
MainActivity.java:
package com.example.yourapp;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
public class MainActivity extends AppCompatActivity {
private DatabaseHelper dbHelper;
private SQLiteDatabase db;
private List<String> words;
private List<String> pronunciations;
private List<String> meanings;
private int currentIndex = -1;
private int knownCount = 0;
private int unknownCount = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
dbHelper = new DatabaseHelper(this);
db = dbHelper.getReadableDatabase();
words = new ArrayList<>();
pronunciations = new ArrayList<>();
meanings = new ArrayList<>();
loadWords();
Button buttonKnown = findViewById(R.id.button_known);
Button buttonUnknown = findViewById(R.id.button_unknown);
buttonKnown.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (currentIndex != -1) {
showMeaning();
knownCount++;
}
}
});
buttonUnknown.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (currentIndex != -1) {
showMeaning();
unknownCount++;
}
}
});
}
private void loadWords() {
Cursor cursor = db.query(DatabaseHelper.TABLE_WORDS, null, null, null, null, null, null);
int englishIndex = cursor.getColumnIndex(DatabaseHelper.COLUMN_ENGLISH);
int symbolIndex = cursor.getColumnIndex(DatabaseHelper.COLUMN_SYMBOL);
int chineseIndex = cursor.getColumnIndex(DatabaseHelper.COLUMN_CHINESE);
if (englishIndex == -1 || symbolIndex == -1 || chineseIndex == -1) {
Toast.makeText(this, "Database column not found", Toast.LENGTH_SHORT).show();
return;
}
while (cursor.moveToNext()) {
words.add(cursor.getString(englishIndex));
pronunciations.add(cursor.getString(symbolIndex));
meanings.add(cursor.getString(chineseIndex));
}
cursor.close();
}
private void showMeaning() {
TextView meaningView = findViewById(R.id.textView_meaning);
meaningView.setText(meanings.get(currentIndex));
}
private void showNextWord() {
if (words.size() > 0) {
Random random = new Random();
currentIndex = random.nextInt(words.size());
TextView wordView = findViewById(R.id.textView_word);
TextView pronunciationView = findViewById(R.id.textView_pronunciation);
wordView.setText(words.get(currentIndex));
pronunciationView.setText(pronunciations.get(currentIndex));
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main_menu, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.menu_start:
showNextWord();
return true;
case R.id.menu_end:
showResult();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
private void showResult() {
Toast.makeText(this, "认识的单词数量: " + knownCount + "\n不认识的单词数量: " + unknownCount, Toast.LENGTH_LONG).show();
}
}