У меня есть некоторые данные и изображения соответственно.Я сохранил это в Sqlite.После выхода из базы данных все данные отображаются для меня, но изображения не отображаются.Я сохранил изображения кода выброса sqlite:
holder.favoutitBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
holder.tPicture.buildDrawingCache();
Bitmap bitmap = holder.tPicture.getDrawingCache();
ByteArrayOutputStream baos = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos);
byte[] data = baos.toByteArray();
databaseHelper=new DatabaseHelper(context);
boolean insert=databaseHelper.addToDb(subjects.get(position).getId(),subjects.get(position).getRoomid(),
subjects.get(position).getHonorname(),subjects.get(position).getRoomname(),subjects.get(position).getLocation(), subjects.get(position).getHonorphno(),
subjects.get(position).getPrice(),subjects.get(position).getGenralLocation() ,subjects.get(position).getLongitudeLatitude(),data, "data");
// app:sparkbutton_inActiveImage=""
if (insert)
{
Toast.makeText(context, "Data inserted into Fav", Toast.LENGTH_SHORT).show();
}
else {
Toast.makeText(context, "Not inserted", Toast.LENGTH_SHORT).show();
}
}
});
Это адаптер для повторного просмотра для вставки данных вместе с изображениями в sqlite. Теперь вот код для извлечения данных из sqlite.Все данные отображаются отлично, а не изображения.
recyclerView = (RecyclerView) view.findViewById(R.id.favRoomRecyclerView);
layoutManager = new LinearLayoutManager(getActivity());
recyclerView.setLayoutManager(layoutManager);
recyclerView.setHasFixedSize(true);
db = new DatabaseHelper(getActivity());
// int coul= Integer.parseInt(db.COL11);
SQLiteDatabase sqLiteDatabase = db.getReadableDatabase();
cursor = db.getData("data");
cursor.moveToFirst();
//Toast.makeText(this, "Id is :"+cursor.getColumnName(Integer.parseInt("ID")), Toast.LENGTH_SHORT).show();
if (cursor.getCount() > 0) {
do {
byte[] blob = cursor.getBlob(cursor.getColumnIndex(db.COL11));
ByteArrayInputStream inputStream = new ByteArrayInputStream(blob);
Bitmap bitmap = BitmapFactory.decodeStream(inputStream);
RoomGetrSetr room = new RoomGetrSetr(cursor.getInt(1), cursor.getInt(2),
cursor.getString(3), cursor.getString(4), cursor.getString(5),
cursor.getString(6), cursor.getString(7), cursor.getString(8),
cursor.getString(9),
cursor.getBlob(cursor.getColumnIndex(db.COL11)));
arrayList.add(room);
} while (cursor.moveToNext());
db.close();
}
cursor.close();
adapter = new Fav_Room_Adapter(arrayList, getActivity());
recyclerView.setAdapter(adapter);
Класс получения и установки:
public RoomGetrSetr(int id, int roomid , String honorname, String roomname, String location,
String honorphno, String price, String genralLocation, String LongitudeLatitude , byte[] imgae_url) {
this.id=id;
this.roomid=roomid;
this.honorname = honorname;
this.roomname = roomname;
this.location = location;
this.honorphno = honorphno;
this.price = price;
this.genralLocation=genralLocation;
this.LongitudeLatitude=LongitudeLatitude;
this.imgae_url=imgae_url;
}
public byte[] getImgae() {
return imgae_url;
}
Класс DatabaseHelper
@Override
public void onCreate(SQLiteDatabase db) {
String createTable = "CREATE TABLE " + TABLE_NAME + " (ID INTEGER PRIMARY KEY AUTOINCREMENT, " +
COL2 + " TEXT, " + COL3 + " TEXT, " + COL4 + " TEXT, " + COL5 + " TEXT, " + COL6 + " TEXT, " + COL7 + " TEXT, " + COL8 + " TEXT, " +
COL9 + " TEXT, " + COL10 + " TEXT, " + COL11 + " BLOB NOT NULL, " + COL12 + " TEXT )";
db.execSQL(createTable);
System.out.println("Table Created");
}
@Override
public void onUpgrade(SQLiteDatabase db, int i, int i1) {
db.execSQL("DROP IF TABLE EXISTS " + TABLE_NAME);
onCreate(db);
}
public boolean addToDb(int id,int roomid, String honorname, String roomname,
String location, String honorphno,String price,String genrallocation,
String LongitudeLatitude, byte[] image, String user_id){
ContentValues cv = new ContentValues();
System.out.println("Null pointer Exception");
SQLiteDatabase db = this.getWritableDatabase();
ContentValues contentValues = new ContentValues();
contentValues.put(COL2, id);
contentValues.put(COL3, roomid);
contentValues.put(COL4, honorname);
contentValues.put(COL5, roomname);
contentValues.put(COL6, location);
contentValues.put(COL7, honorphno);
contentValues.put(COL8,price);
contentValues.put(COL9,genrallocation);
contentValues.put(COL10,LongitudeLatitude);
contentValues.put(COL11,image);
contentValues.put(COL12,user_id);
//counterForDeleteSubject=counterForDeleteSubject+1;
System.out.println("User Id is:"+user_id);
Log.d("DatabaseHelper", "addData: Adding to " + TABLE_NAME);
long result = db.insert(TABLE_NAME, null, contentValues);
//SubjectStatusChecked();
System.out.println("Counter is --="+counterForDeleteSubject);
///Checking status if subject is added to SQLite then status is updated so that button is clicked
if (result == -1) {
return false;
} else {
return true;
}
}
public Cursor getData(String userId){
SQLiteDatabase db = this.getWritableDatabase();
String query = "SELECT * FROM " + TABLE_NAME + " WHERE " + COL12 + " = '" + userId + "'";
Cursor data = db.rawQuery(query, null);
return data;
}
Вот мой адаптер, который используется для настройки данных и изображений:
@Override
public void onBindViewHolder(final MyViewHolder holder, final int position) {
RoomGetrSetr list=subjects.get(position);
holder.roonName.setText(subjects.get(position).getRoomname());
holder.honorName.setText(subjects.get(position).getHonorname());
holder.loation.setText(subjects.get(position).getLocation());
holder.price.setText(subjects.get(position).getPrice());
Теперь здесь, в последнем коде, как я устанавливаю изображение для этого adpater.Я показываю это во фрагменте.