良い一日、私はここに2つの質問があります:
まず、背景情報。
androidのドキュメントから、データベースにクエリを実行するときに、カーソルアダプターで機能させるには、「_id」という名前の列を返す必要があります。今私の実装では、3つの列「_id」、「列A」、「列B」があるとしましょう。
したがって、データベーステーブルに8つのエントリ行がある場合、列Aの最初の3行が入力され、列Bの次の5行が入力されます。データベースに列Bを照会し、バインドビューで以下のコードを使用すると、カーソルがすべての行を返し、最初の3つのエントリがnullになり、最後の5つのアイテムが画像のグリッドビューに表示されます。
これが私のbindViewです:
@Override
public void bindView(View view, Context context, Cursor cursor) {
ViewHolder holder = (ViewHolder)view.getTag();
int columnIndex = cursor.getColumnIndexOrThrow(columnName);
final String name = cursor.getString(columnIndex);
while(cursor.moveToNext()){
if(name != null){
Log.d(TAG, "string name in gridimageadapter is " + name);
BitmapFactory.Options options = new BitmapFactory.Options();
Bitmap bitmap = BitmapFactory.decodeFile(name);
Bitmap newbitmap = Bitmap.createScaledBitmap(bitmap, 200, 200, false);
if(holder.image != null){
holder.image.setImageBitmap(newbitmap);
}
bitmap.recycle();
}
}
}
だから私の質問は:
null以外の行を持つ列を返すsqliteクエリを作成するにはどうすればよいですか?私の現在の実装は次のとおりです。
public Cursor retrieveTag(String tag){
String[] condition = {KEY_ID,tag}; Cursor cursor = db.query(DATABASE_TABLE, condition, null, null, null, null, null); return cursor; }
BindViewコードから、この条件を次のように使用する場合
if(!name.equals(null)||!name.equals( "")){}
NullPointerExceptionが発生します。それはなぜですか?..これは文字列を正しくテストする正しい方法ですか?..
私の質問が明確であることを願っています。どんな助けでも大歓迎です。ありがとうございました。