6.5
今天发现我做的项目,有些使用上的问题,很不人性化,比如拍照后,和搜索后没办法查看曾经搜过的东西,于是我加了一个查询历史记录,使用的是sqlite数据库。
public void initData(MyObject a) {
if (a.getResult().get(0).getRoot().equals("feel this wave")) {
a.getResult().remove(0);
}
get(a.getResult());
mBeanList = new ArrayList<>();
String firstUser = null;
for (MyObject.ResultItem user : a.getResult()) {
ItemBean itemBean = new ItemBean();
itemBean.setTitle(user.getKeyword());
itemBean.setContent("概率" + user.getScore() + "点击了解详情");
itemBean.setImgsId(R.drawable.ani);
mBeanList.add(itemBean);
System.out.println(mBeanList.size());
if (firstUser == null) {
firstUser = user.getKeyword(); // 保存第一个user
}
}
if (firstUser != null) {
saveToHistorys(firstUser); // 只调用一次saveToHistorys()方法
}
myAdapter = new MyAdapter(ChooseActivity.this, mBeanList);
listView.setAdapter(myAdapter);
}
if (a.getResult().get(0).getRoot().equals("feel this wave")) {
a.getResult().remove(0);
}
get(a.getResult());
mBeanList = new ArrayList<>();
String firstUser = null;
for (MyObject.ResultItem user : a.getResult()) {
ItemBean itemBean = new ItemBean();
itemBean.setTitle(user.getKeyword());
itemBean.setContent("概率" + user.getScore() + "点击了解详情");
itemBean.setImgsId(R.drawable.ani);
mBeanList.add(itemBean);
System.out.println(mBeanList.size());
if (firstUser == null) {
firstUser = user.getKeyword(); // 保存第一个user
}
}
if (firstUser != null) {
saveToHistorys(firstUser); // 只调用一次saveToHistorys()方法
}
myAdapter = new MyAdapter(ChooseActivity.this, mBeanList);
listView.setAdapter(myAdapter);
}
在拍照和选择的类中此方法中加入了if语句用来判断并存储可能性最高的结果。
package com.example.vastland;
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 = "history.db";
// 数据库版本号
private static final int DATABASE_VERSION = 1;
//表名
public static final String TABLE_NAME ="history" ;
// 列名
private static final String COLUMN_ID = "id";
public static final String COLUMN_IMAGE_PATH = "image_path";
public static final String COLUMN_RESULT = "result";
public DatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
// 创建表
String createTableQuery = "CREATE TABLE " + TABLE_NAME + "(" +
COLUMN_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
COLUMN_IMAGE_PATH + " TEXT, " +
COLUMN_RESULT + " TEXT" +
")";
db.execSQL(createTableQuery);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// 升级数据库时的操作
}
}
创建数据库类
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 = "history.db";
// 数据库版本号
private static final int DATABASE_VERSION = 1;
//表名
public static final String TABLE_NAME ="history" ;
// 列名
private static final String COLUMN_ID = "id";
public static final String COLUMN_IMAGE_PATH = "image_path";
public static final String COLUMN_RESULT = "result";
public DatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
// 创建表
String createTableQuery = "CREATE TABLE " + TABLE_NAME + "(" +
COLUMN_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
COLUMN_IMAGE_PATH + " TEXT, " +
COLUMN_RESULT + " TEXT" +
")";
db.execSQL(createTableQuery);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// 升级数据库时的操作
}
}
创建数据库类
private void saveToHistory(String imagePath) {
DatabaseHelper databaseHelper = new DatabaseHelper(this);
SQLiteDatabase db = databaseHelper.getWritableDatabase();
ContentValues values = new ContentValues();
values.put(DatabaseHelper.COLUMN_IMAGE_PATH, imagePath);
long rowId = db.insert(DatabaseHelper.TABLE_NAME, null, values);
if (rowId == -1) {
// 保存失败
} else {
// 保存成功
System.out.println("保存成功11111111111111111111111111111111111111111");
}
db.close();
}
private void saveToHistorys( String result) {
DatabaseHelper databaseHelper = new DatabaseHelper(this);
SQLiteDatabase db = databaseHelper.getWritableDatabase();
ContentValues values = new ContentValues();
values.put(DatabaseHelper.COLUMN_RESULT, result);
long rowId = db.insert(DatabaseHelper.TABLE_NAME, null, values);
if (rowId == -1) {
// 保存失败
} else {
// 保存成功
System.out.println("保存成功2222222222222222222222222222222222222222222");
}
db.close();
}
}这是存储方法
DatabaseHelper databaseHelper = new DatabaseHelper(this);
SQLiteDatabase db = databaseHelper.getWritableDatabase();
ContentValues values = new ContentValues();
values.put(DatabaseHelper.COLUMN_IMAGE_PATH, imagePath);
long rowId = db.insert(DatabaseHelper.TABLE_NAME, null, values);
if (rowId == -1) {
// 保存失败
} else {
// 保存成功
System.out.println("保存成功11111111111111111111111111111111111111111");
}
db.close();
}
private void saveToHistorys( String result) {
DatabaseHelper databaseHelper = new DatabaseHelper(this);
SQLiteDatabase db = databaseHelper.getWritableDatabase();
ContentValues values = new ContentValues();
values.put(DatabaseHelper.COLUMN_RESULT, result);
long rowId = db.insert(DatabaseHelper.TABLE_NAME, null, values);
if (rowId == -1) {
// 保存失败
} else {
// 保存成功
System.out.println("保存成功2222222222222222222222222222222222222222222");
}
db.close();
}
}这是存储方法
package com.example.vastland;
import androidx.appcompat.app.AppCompatActivity;
import android.annotation.SuppressLint;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ListView;
import java.util.ArrayList;
import java.util.List;
public class HistoryActivity extends AppCompatActivity {
private ListView listView;
private HistoryAdapter historyAdapter;
private Button del;
@SuppressLint("MissingInflatedId")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_history);
listView = findViewById(R.id.listView);
del = findViewById(R.id.bt_del);
// 获取历史记录数据并设置适配器
List<ItemBean> historyList = getHistoryListFromDatabase();
historyAdapter = new HistoryAdapter(this, historyList);
listView.setAdapter(historyAdapter);
del.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// 获取数据库实例
DatabaseHelper dbHelper = new DatabaseHelper(getApplicationContext());
SQLiteDatabase db = dbHelper.getWritableDatabase();
// 删除表中的所有数据
db.execSQL("DELETE FROM " + DatabaseHelper.TABLE_NAME);
// 关闭数据库连接
db.close();
// 升级数据库的其他操作
}
});
}
private List<ItemBean> getHistoryListFromDatabase() {
// 从数据库中获取历史记录数据
List<ItemBean> historyList = showHistory();
// 返回历史记录列表数据
return historyList;
}
private List<ItemBean> showHistory() {
DatabaseHelper databaseHelper = new DatabaseHelper(this);
SQLiteDatabase db = databaseHelper.getReadableDatabase();
String[] projection = {DatabaseHelper.COLUMN_IMAGE_PATH, DatabaseHelper.COLUMN_RESULT};
Cursor cursor = db.query(DatabaseHelper.TABLE_NAME, projection, null, null, null, null, null);
List<ItemBean> mBeanList = new ArrayList<>();
while (cursor.moveToNext()) {
String imagePath = cursor.getString(cursor.getColumnIndexOrThrow(DatabaseHelper.COLUMN_IMAGE_PATH));
String result = cursor.getString(cursor.getColumnIndexOrThrow(DatabaseHelper.COLUMN_RESULT));
//图片路径filepath
Bitmap bitmap = BitmapFactory.decodeFile(imagePath);//从路径加载出图片bitmap
//imageView.setImageBitmap(bitmap);//ImageView显示图片
//
ItemBean itemBean = new ItemBean();
itemBean.setTitle(result);
itemBean.setContent(result);
itemBean.setImgsId(R.drawable.ic_launcher_foreground);
mBeanList.add(itemBean);
}
cursor.close();
db.close();
return mBeanList;
}
}这是历史查询的后端代码,用来查询,最后将结果打印显示在listview中。
import androidx.appcompat.app.AppCompatActivity;
import android.annotation.SuppressLint;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ListView;
import java.util.ArrayList;
import java.util.List;
public class HistoryActivity extends AppCompatActivity {
private ListView listView;
private HistoryAdapter historyAdapter;
private Button del;
@SuppressLint("MissingInflatedId")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_history);
listView = findViewById(R.id.listView);
del = findViewById(R.id.bt_del);
// 获取历史记录数据并设置适配器
List<ItemBean> historyList = getHistoryListFromDatabase();
historyAdapter = new HistoryAdapter(this, historyList);
listView.setAdapter(historyAdapter);
del.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// 获取数据库实例
DatabaseHelper dbHelper = new DatabaseHelper(getApplicationContext());
SQLiteDatabase db = dbHelper.getWritableDatabase();
// 删除表中的所有数据
db.execSQL("DELETE FROM " + DatabaseHelper.TABLE_NAME);
// 关闭数据库连接
db.close();
// 升级数据库的其他操作
}
});
}
private List<ItemBean> getHistoryListFromDatabase() {
// 从数据库中获取历史记录数据
List<ItemBean> historyList = showHistory();
// 返回历史记录列表数据
return historyList;
}
private List<ItemBean> showHistory() {
DatabaseHelper databaseHelper = new DatabaseHelper(this);
SQLiteDatabase db = databaseHelper.getReadableDatabase();
String[] projection = {DatabaseHelper.COLUMN_IMAGE_PATH, DatabaseHelper.COLUMN_RESULT};
Cursor cursor = db.query(DatabaseHelper.TABLE_NAME, projection, null, null, null, null, null);
List<ItemBean> mBeanList = new ArrayList<>();
while (cursor.moveToNext()) {
String imagePath = cursor.getString(cursor.getColumnIndexOrThrow(DatabaseHelper.COLUMN_IMAGE_PATH));
String result = cursor.getString(cursor.getColumnIndexOrThrow(DatabaseHelper.COLUMN_RESULT));
//图片路径filepath
Bitmap bitmap = BitmapFactory.decodeFile(imagePath);//从路径加载出图片bitmap
//imageView.setImageBitmap(bitmap);//ImageView显示图片
//
ItemBean itemBean = new ItemBean();
itemBean.setTitle(result);
itemBean.setContent(result);
itemBean.setImgsId(R.drawable.ic_launcher_foreground);
mBeanList.add(itemBean);
}
cursor.close();
db.close();
return mBeanList;
}
}这是历史查询的后端代码,用来查询,最后将结果打印显示在listview中。

浙公网安备 33010602011771号