Как добавить imageURI в ImageView с помощью SimpleCursorAdapter из SQLite - PullRequest
0 голосов
/ 27 октября 2019

Я новичок в Java и создаю приложение для Android. Я хочу добавить imageURI из локальной базы данных SQLite в ListView с помощью SimpleCursorAdapter. Я читал разные примеры, однако я все еще не могу отобразить изображение в ImageView через URI. Каждый раз, когда я запускаю приложение и пытаюсь получить свою активность ListView, мое приложение просто останавливается. Может ли кто-нибудь помочь мне в этом? Вот мой код:

public class showproductdata extends AppCompatActivity {

    static final String DB_NAME = "testDB";
    static final String TB_PRODUCT = "productTB";
    static final String COLUMN_PRODUCT_NAME = "product_name";
    static final String COLUMN_PRODUCT_IMAGE_URI = "product_image_uri";
    static final String[] FROM = new String[]{COLUMN_PRODUCT_NAME, COLUMN_PRODUCT_IMAGE_URI};
    static final int[] TO = new int[]{R.id.txvShowProductName, R.id.imgDBImage};
    SQLiteDatabase db;
    SimpleCursorAdapter adapter;
    Cursor cursor;
    ListView lvProduct;
    String strImageUri;
    Uri imageUri;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_showproductdata);

        db = openOrCreateDatabase(DB_NAME, Context.MODE_PRIVATE, null);
        cursor = db.rawQuery("SELECT * FROM " + TB_PRODUCT, null);
        if (cursor != null) {
            cursor.moveToFirst();
        }
        adapter = new SimpleCursorAdapter(this, R.layout.activity_productitem, cursor, FROM, TO, 0);
        adapter.setViewBinder(new SimpleCursorAdapter.ViewBinder(){
            @Override
            public boolean setViewValue(View view, Cursor cursor, int index) {
                if (view.getId() == R.id.imgDBImage) {
                    ImageView imgDBImage = findViewById(R.id.imgDBImage);
                    strImageUri = cursor.getString(cursor.getColumnIndex(COLUMN_PRODUCT_IMAGE_URI));
                    imageUri = Uri.parse(strImageUri);
                    imgDBImage.setImageURI(imageUri);
                    return true;
                }
                return false;
            }
        });
        lvProduct = findViewById(R.id.lvProduct);
        lvProduct.setAdapter(adapter);
    }
}
...