我试着把图像数据导入sqlite数据库。之后,我想把数据库中的数据,并使用回收视图。但其他数据来是成功的图像数据是不来回收视图
这是我的数据库类`public class DBOpenHelper extends SQLiteOpenHelper {
public static final String DATABASE_NAME = "workifyDatabase";
public static final int DATABASE_VERSION = 1;
/* Constructor for the DBOpenHelper class, private to force use of singleton */
private DBOpenHelper(Context context) {
super(context,DATABASE_NAME,null,DATABASE_VERSION);
}
/* Singleton approach (i.e. only 1 instance of DBOpenHelper exists)*/
private static volatile DBOpenHelper instance;
public static DBOpenHelper getInstance(Context context) {
if (instance==null) {
instance = new DBOpenHelper(context);
}
return instance;
}
/* If the database does not exist, then this method will be called */
/* ideal place to create the table(s) */
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE IF NOT EXISTS workifydatabase(id INTEGER PRIMARY KEY,workname VARCHAR,logoid BLOB,year VARCHAR,workinghours INTEGER) ");
}
/* If the database version is increased, then this method will be invoked */
@Override
public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {
}
/* Method to insert a row, using the convenience insert method */
/* this generates the underlying SQL and furthermore returns the id of the inserted row or -1 if the row was not inserted */
public long saveWorkRecord(String workname,byte[] logoid, String year,int workinghours) {
ContentValues cv = new ContentValues();
cv.put("workname",workname);
cv.put("logoid",logoid);
cv.put("year",year);
cv.put("workinghours",workinghours);
return this.getWritableDatabase().insert("workifydatabase",null,cv);
}
/* Example of retrieving data (might want to adapt this to return a TaskArrayList rather than a Cursor) */
public Cursor getAllDataAsCursor() {
return this.getWritableDatabase().query("workifydatabase",null /* all columns */,null /* all rows*/,null /* no selection args */, null,null,null);
}
}这是我的addind数据类
editTextTaskName = findViewById(R.id.editTextTaskName); int getName(); byte[] logoId = ByteBuffer.allocate(4).putInt(selectedLogoId).array();
Button saveButton = findViewById(R.id.saveButton);
saveButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String workName = editTextTaskName.getText().toString();
int workingHours = 0;
Date date = new Date();
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd", Locale.getDefault());
String formattedDate = dateFormat.format(date);
Cursor csr = db.getAllDataAsCursor();
boolean isDuplicate = false;
while (csr.moveToNext()) {
String existingWorkName = csr.getString(csr.getColumnIndex("workname"));
if (existingWorkName.equals(workName)) {
isDuplicate = true;
break;
}
}
if (!isDuplicate) {
// Aynı isimde ödev yoksa kaydet
db.saveWorkRecord(workName, logoIdBytes, formattedDate, workingHours);
csr = db.getAllDataAsCursor();
DatabaseUtils.dumpCursor(csr);
finish();
} else {
Toast.makeText(CreateScreen.this, "There is already a task with this name!", Toast.LENGTH_SHORT).show();
}
}
});`
这是使用class recycler view `private void getData(){
try {
DBOpenHelper dbHelper = DBOpenHelper.getInstance(getContext());
//ArrayList<Task> taskList = new ArrayList<>();
Cursor cursor = dbHelper.getAllDataAsCursor();
int nameIx = cursor.getColumnIndex("workname");
int logoIdIx = cursor.getColumnIndex("logoid");
int yearIx = cursor.getColumnIndex("year");
int workingHoursIx = cursor.getColumnIndex("workinghours");
while (cursor.moveToNext()) {
String workName = cursor.getString(nameIx);
byte[] logoId = cursor.getBlob(logoIdIx);
Bitmap logoBitmap = BitmapFactory.decodeByteArray(logoId, 0, logoId.length);
String formattedDate = cursor.getString(yearIx);
int workingHours = cursor.getInt(workingHoursIx);
Task task = new Task(workName, logoBitmap, workingHours, formattedDate);
TaskArrayList.add(task);
}
taskAdapter.notifyDataSetChanged();
}catch (Exception e){
e.printStackTrace();
}
}`
最后,这是我的回收器视图适配器类`public class TaskAdapter extends RecyclerView.Adapter <TaskAdapter.TaskViewHolder>{
ArrayList<Task> TaskArrayList;
int enqueueNumber;
public TaskAdapter(ArrayList<Task> TaskArrayList) {
this.TaskArrayList = TaskArrayList;
}
@NonNull
@Override
public TaskViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View itemView = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_task, parent, false);
return new TaskViewHolder(itemView);
}
@Override
public void onBindViewHolder(@NonNull TaskViewHolder holder, int position) {
holder.titleText.setText(TaskArrayList.get(position).getTaskName());
holder.infoText.setText("Total Working Hours: " + TaskArrayList.get(position).getWorkingHours());
holder.recyclerLogoView.setImageBitmap(TaskArrayList.get(position).getLogoBitmap());
}
@Override
public int getItemCount() {
return TaskArrayList.size();
}
class TaskViewHolder extends RecyclerView.ViewHolder {
TextView titleText;
TextView infoText;
ImageView imageViewTasks;
ImageView imageViewTasks2;
ImageView imageViewTasks8;
ImageView recyclerLogoView;
public TaskViewHolder(@NonNull View itemView) {
super(itemView);
titleText = itemView.findViewById(R.id.titleText);
infoText = itemView.findViewById(R.id.infoText);
imageViewTasks = itemView.findViewById(R.id.imageViewTasks);
imageViewTasks2 = itemView.findViewById(R.id.imageViewTasks2);
imageViewTasks8 = itemView.findViewById(R.id.imageViewTasks8);
recyclerLogoView = itemView.findViewById(R.id.recyclerLogoView);
Random random = new Random();
int randomNumber = random.nextInt(13)+1;
enqueueNumber = 15%randomNumber;
if (enqueueNumber == 0){
imageViewTasks8.setImageResource(R.drawable.orange);
}else if(enqueueNumber == 2){
imageViewTasks8.setImageResource(R.drawable.yellow);
}else if(enqueueNumber == 3){
imageViewTasks8.setImageResource(R.drawable.gray);
} else if (enqueueNumber == 1) {
imageViewTasks8.setImageResource(R.drawable.green);
}else if(enqueueNumber == 6){
imageViewTasks8.setImageResource(R.drawable.blue);
}else if(enqueueNumber == 5){
imageViewTasks8.setImageResource(R.drawable.pink);
}else if(enqueueNumber == 4){
imageViewTasks8.setImageResource(R.drawable.purple);
}else if(enqueueNumber == 7){
imageViewTasks8.setImageResource(R.drawable.red);
}
}
}
}`我想让你的浏览器上有一个可见的浏览器图标
2条答案
按热度按时间wfveoks01#
下面是代码片段的修改版本,给予您如何实现这一点:
记住要将Glide或Picasso这样的库集成到项目中,并处理文件系统上阅读和写入图像的权限。
4smxwvx52#
在将可绘制路径作为字符串数据获取到数据库后,我执行了以下操作:
然后我将在适配器类中接收到的字符串数据转换为可绘制文件:
public void onBindViewHolder(@ NonTaskViewHolder,int position){
这里需要注意的是直接获取资源的名称,而不是可绘制的路径,例如,不是res/drawable/sun.png,而是太阳的名称。