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语句用来判断并存储可能性最高的结果。
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) {
// 升级数据库时的操作
}
}
创建数据库类
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();
}

}这是存储方法
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中。
posted @ 2024-06-05 19:56  ZzHhyao  阅读(13)  评论(0)    收藏  举报