2012-03-04 3 views
6

У меня есть пользовательский адаптер курсора, и я хотел бы поместить изображение в ImageView в ListView.Получить изображение ресурса по имени в пользовательский адаптер курсора

Мой код:

public class CustomImageListAdapter extends CursorAdapter { 

    private LayoutInflater inflater; 

    public CustomImageListAdapter(Context context, Cursor cursor) { 
    super(context, cursor); 
    inflater = LayoutInflater.from(context); 
    } 

    @Override 
    public void bindView(View view, Context context, Cursor cursor) { 
    // get the ImageView Resource 
    ImageView fieldImage = (ImageView) view.findViewById(R.id.fieldImage); 
    // set the image for the ImageView 
    flagImage.setImageResource(R.drawable.imageName); 
    } 

    @Override 
    public View newView(Context context, Cursor cursor, ViewGroup parent) { 
    return inflater.inflate(R.layout.row_images, parent, false); 
    } 
} 

Это все в порядке, но я хотел бы получить имя изображения из базы данных (курсор). Я попытался с

String mDrawableName = "myImageName"; 
int resID = getResources().getIdentifier(mDrawableName , "drawable", getPackageName()); 

Но вернуть ошибку: "The GetResources() метод не определен для типа CustomImageListAdapter"

+0

Если вы хотите получить от Cursor, почему вы не называете 'cursor.getString'. И где хранится ваше изображение? –

ответ

13

Вы можете сделать только getResources() вызов на объект Context. Так как конструктор CursorAdapter принимает такую ​​ссылку, просто создайте члена класса, который отслеживает его, чтобы вы могли использовать его (предположительно) bindView(...). Вероятно, вам это понадобится и для getPackageName().

private Context mContext; 

public CustomImageListAdapter(Context context, Cursor cursor) { 
    super(context, cursor); 
    inflater = LayoutInflater.from(context); 
    mContext = context; 
} 

// Other code ... 

// Now call getResources() on the Context reference (and getPackageName()) 
String mDrawableName = "myImageName"; 
int resID = mContext.getResources().getIdentifier(mDrawableName , "drawable", mContext.getPackageName()); 
+0

+1 ты меня избил. :) – Squonk

+0

Спасибо «МЗ». для решения. (также к «MisterSquonk») – Cuarcuiu

+0

Почему вы можете использовать getResources(), не добавляя контекст внутри Activity? Благодарю. – Ricardo

Смежные вопросы