Отображение изображения в ListView из базы данных SQLite - PullRequest
0 голосов
/ 27 июня 2011

Я немного застрял на данный момент. Я знаю, что подобные вопросы задавались, но я не смог найти ничего, что помогло бы.

Я пытаюсь получить изображение для отображения в ListView из внутренней базы данных в моем приложении для Android. У меня есть база данных с 141 строкой, и каждая строка помечена 1,2 или 3. Мне нужно другое изображение png (сохраненное в моей папке res / drawable), чтобы показать в зависимости от 1,2 или 3. Вот мой текущий Запрос. Любой совет приветствуется. Я понимаю, что может быть лучший способ отобразить нужную мне информацию.

   public void whosnext(View view) {
    // || is the concatenation operation in SQLite
    cursor = db.rawQuery("SELECT * FROM eventsv1 WHERE start_time > (DATETIME('now')) AND title LIKE ? ORDER BY date ASC, time DESC", 
                    new String[]{"%" + searchText.getText().toString() + "%"});
    adapter = new SimpleCursorAdapter(
            this, 
            R.layout.artist_list_item, 
            cursor, 
            new String[] {"title", "time", "date", "title3", "style"}, 
            new int[] {R.id.title, R.id.time, R.id.date, R.id.title3, R.id.style});
    setListAdapter(adapter);
}

Ответы [ 2 ]

1 голос
/ 27 июня 2011

Я бы написал привычный CursorAdapter

public class WhosNextAdapter extends CursorAdapter
{
    public WhosNextAdapter(Context context, Cursor cursor, boolean autoRequery) {
        super(context, cursor, autoRequery);
    }

    @Override
    public void bindView(View view, Context context, Cursor cursor) {
        //This is were you would check your cursor for style (I think that is 1,2,3 your column)
        int style = cursor.getInt(cursor.getColumnIndex("style"));

        ImageView img = (ImageView) view.findViewById(R.id.yourImageViewId);

        switch (style) {
            case 1:
                img.setImageResource(R.drawable.yourImageForStyle1);

            break;
            case 2:
                img.setImageResource(R.drawable.yourImageForStyle2);

            break;

//etc.
        }
    }

    @Override
    public View newView(Context context, Cursor cursor, ViewGroup parent) {
        //Inflate layout R.layout.artist_list_item

        //Call bindView passing inflated layout, context, and cursor

        //return layout
    }
}
0 голосов
/ 27 июня 2011

Вам определенно нужно расширить SimpleCursorAdapter, и если ваш макет элемента достаточно прост, единственное, что вам нужно сделать, это переопределить setViewImage() метод, где вы просто конвертируете предоставленное значение из базы данных и вызовите метод setImageResource() дляImageView объект.Тогда вам не нужно будет чередовать прикрепленный код.

public class MySimpleCursorAdpater extends SimpleCursorAdapter {

    public MySimpleCursorAdpater(Context context, int layout, Cursor c,
            String[] from, int[] to) {
        super(context, layout, c, from, to);
    }

    @Override
    public void setViewImage(ImageView v, String value) {
        /*your code to convert value from database to drawable resource id*/
        v.setImageResource(resourceId);
    }

}
...