0

私はここで新しいです:D

Androidアプリのデータベースsqliteで画像を取得しましたが、別の画像を取得しようとすると、以前と同じように画像が表示されます。常に1行目から画像を取得します理由はわかりません

これは私のコードです

public void findAlphabet(View view) {
    try {
        db = kamusTI.getWritableDatabase();
        String sql = "SELECT * FROM kamusti WHERE istilah LIKE '"
                + editAlphabet.getText().toString() + "%' ORDER BY istilah";
        cursor = db.rawQuery(sql, null);            
        adapter2 = new SimpleCursorAdapter(this,
                android.R.layout.simple_list_item_2, cursor, new String[] {
                        "istilah", "definisi" }, new int[] {
                        android.R.id.text1, android.R.id.text2 });
        listView2.setAdapter(adapter2);
        listView2.setTextFilterEnabled(true);
        String sql1 = "SELECT COUNT(istilah) FROM kamusti WHERE istilah LIKE '"
                + editAlphabet.getText().toString() + "%' ORDER BY istilah";
        cursor = db.rawQuery(sql1, null);
        cursor.moveToFirst();

        cur = db.query("kamusti", null, null, null, null, null, null);
        cur.moveToFirst();
    //  cur.moveToPosition(0);
        byte[] im = cur.getBlob(3);
        //  ByteArrayInputStream imagestream = new ByteArrayInputStream(im);
            Bitmap imagestream = BitmapFactory.decodeByteArray(im, 0, im.length);
        //  Bitmap image = BitmapFactory.decodeStream(imagestream);
            img = (ImageView) findViewById (R.id.gambar);
            img.setImageBitmap(imagestream); 
        hasilCari.setText("Hasil Pencarian : " + cursor.getInt(0));
    } catch (SQLException e) {
        hasilCari.setText(e.toString());
    }
}

これを修正する方法がわかりません。アプリで別のアルファベットを見つけようとすると、画像は常にデータベースの1行目に表示されます。私を助けてください :)

*私の悪い英語でごめんなさい

4

1 に答える 1

0

ああ、すみませんが、私はそれを言わなければなりません:あなたのコードは本当にひどいです...

それはまったく組織化されていませんが、多分...代わりにすbyte[] im = cur.getBlob(3);べきではありませんか?byte[] im = cursor.getBlob(3);


編集:2番目と3番目のクエリは役に立たないように見えるのでコメントして、「cur」->「cursor」を変更してください。

    public void findAlphabet(View view) {
        try {
            db = kamusTI.getWritableDatabase();
            String sql = "SELECT * FROM kamusti WHERE istilah LIKE '"
                    + editAlphabet.getText().toString() + "%' ORDER BY istilah";
            cursor = db.rawQuery(sql, null);            
            adapter2 = new SimpleCursorAdapter(this,
                    android.R.layout.simple_list_item_2, cursor, new String[] {
                            "istilah", "definisi" }, new int[] {
                            android.R.id.text1, android.R.id.text2 });
            listView2.setAdapter(adapter2);
            listView2.setTextFilterEnabled(true);
//            String sql1 = "SELECT COUNT(istilah) FROM kamusti WHERE istilah LIKE '"
//                    + editAlphabet.getText().toString() + "%' ORDER BY istilah";
//            cursor = db.rawQuery(sql1, null);
              cursor.moveToFirst();

//            cur = db.query("kamusti", null, null, null, null, null, null);
//            cur.moveToFirst();
        //  cur.moveToPosition(0);
            byte[] im = cursor.getBlob(3);
            //  ByteArrayInputStream imagestream = new ByteArrayInputStream(im);
                Bitmap imagestream = BitmapFactory.decodeByteArray(im, 0, im.length);
            //  Bitmap image = BitmapFactory.decodeStream(imagestream);
                img = (ImageView) findViewById (R.id.gambar);
                img.setImageBitmap(imagestream); 
            hasilCari.setText("Hasil Pencarian : " + cursor.getInt(0));
        } catch (SQLException e) {
            hasilCari.setText(e.toString());
        }
    }
于 2013-01-12T13:00:57.003 に答える