我正在製作一個應用程序,他們在SQLite數據庫中輸入一些信息,然後使用ListView顯示。爲什麼我的遊標返回一些不正確的信息?
雖然似乎有一點問題,我找不到它。
示例:當他們輸入第一個項目的信息並且他們選擇不拍攝圖片時,該項目在ListView中正確顯示。它不會有一個圖片展示,這是完美的。但是如果他們添加另一個項目,並且這次他們選擇拍攝照片,則第二個項目的圖像也將顯示在列表中的第一個項目中。
此外,listview中的圖像是數據庫中的縮略圖列。
我有一對夫婦的照片,以幫助顯示此:
數據庫中的信息是什麼樣子:
這是什麼樣子的應用程序。第一項不應該有一個縮略圖顯示,而是它顯示從第二項的縮略圖:
我不知道這一點。我的代碼看起來是正確的,並且該遊標的所有其他信息都是正確的,但爲什麼只是縮略圖不是?
這裏是我的CursorAdapter相關的代碼,ListView控件使用:
//This turns the thumbnail's bytearray into a bitmap
byte[] bitmap = cursor.getBlob(cursor.getColumnIndexOrThrow(WineContract.WineEntry.COLUMN_WINE_THUMBNAIL));
if (bitmap==null){
Log.d(TAG, "No image was taken for wine: " + wineName);
}else {
Bitmap image = BitmapFactory.decodeByteArray(bitmap, 0, bitmap.length);
wineThumbnail.setImageBitmap(image);
}
任何人都不會有什麼可以在這裏進行的任何猜測?
編輯:添加在整個的CursorAdapter代碼:
public class WineCursorAdapter extends CursorAdapter {
private String TAG = "WineCursorAdapter";
public WineCursorAdapter(Context context, Cursor c) {
super(context, c);
}
@Override
public View newView(Context context, Cursor cursor, ViewGroup parent) {
return LayoutInflater.from(context).inflate(R.layout.list_item, parent, false);
}
@Override
public void bindView(View view, Context context, Cursor cursor) {
//Populate the views
TextView textViewName = (TextView) view.findViewById(wineName);
TextView textViewPrice = (TextView) view.findViewById(R.id.winePrice);
RatingBar ratingWine = view.findViewById(R.id.wineRating);
ImageView wineThumbnail = view.findViewById(R.id.listImage);
//get the info from cursor
String wineName = cursor.getString(cursor.getColumnIndexOrThrow(WineContract.WineEntry.COLUMN_WINE_NAME));
String winePrice = cursor.getString(cursor.getColumnIndexOrThrow(WineContract.WineEntry.COLUMN_WINE_PRICE));
float wineRating = cursor.getFloat(cursor.getColumnIndexOrThrow(WineContract.WineEntry.COLUMN_WINE_RATING));
//This turns the thumbnail's bytearray into a bitmap
byte[] bitmap = cursor.getBlob(cursor.getColumnIndexOrThrow(WineContract.WineEntry.COLUMN_WINE_THUMBNAIL));
if (bitmap==null){
Log.d(TAG, "No image was taken for wine: " + wineName);
}else {
Bitmap image = BitmapFactory.decodeByteArray(bitmap, 0, bitmap.length);
wineThumbnail.setImageBitmap(image);
}
textViewName.setText(wineName);
DecimalFormat format = new DecimalFormat("####.##");
String formatted = format.format(Float.parseFloat(winePrice));
textViewPrice.setText("$" + formatted);
ratingWine.setRating(wineRating);
}
}
「位圖== null」分支也需要在'wineThumbnail'上設置圖像。此視圖回收錯誤可能不是您代碼中的唯一一個 - 如果這沒有幫助,請發佈更多適配器代碼。 – laalto
@laalto我剛添加在整個CursorAdapter中。 – andrdoiddev