2016-07-07 2 views
0

Вот код:Преобразовать Int в ImageView

public class Article { 
(...) 
private static int[] sImages = { R.drawable.ic_picture}; 
private ImageView mImage; 
public Article(int a) 
{ 
    mImage = sImages[a]; 
} 

В: mImage = sImages[a]; Существует эта ошибка:

Incompatible types
Required: android.wiget.ImageView
Found: Int

Как преобразовать Int в android.widget.ImageView или что-то подобное ?

(я создаю RecyclerView и в том, что много ImageView и я хочу иметь список с изображениями на эти ImageViews.)

+0

Что вы пытаетесь достичь? –

+0

Почему вы хотите преобразовать int в ImageView? –

+1

Старайтесь усерднее задавать вопросы. Потратьте минутку, чтобы исправить грамматику и орфографию. – sp0rk

ответ

2

Вы можете использовать setImageResource. Когда вы вызываете класс ur Article, также передавайте представление.

private static int[] sImages = { R.drawable.ic_picture}; 
private ImageView mImage; 
public Article(int a, View view) 
{ 
    mImage = (ImageView) view.findViewById(R.id.image); 
    mImage.setImageResource(sImages[a]); 
} 
+0

Ошибка: «Не удается разрешить метод findViewById (int)» « –

+0

Подождите, я протестировал его. –

+0

Он работает, но это некоторый код MainActivity: for (int i = 0; i <30; ++ i) articles.add (новая статья (i)); –

0

Вашего блок кода показывает Article класса, который должен быть присоединен к RecyclerView с соответствующим изображением, является то, что я полагаю, из вашего вопроса. В комментариях у вас есть

for (int i = 0; i < 30; ++i) { articles.add(new Article(i))}

  1. Вы устанавливаете 30 как жесткий кодированный предел вместо этого вы должны установить его на размер вашего массива ID изображения.
  2. Вы знаете, что вы приращение индекса, прежде чем добавить статью, которая заставит вас потерять на ид по индексу 0.
  3. Все это делает пройти int через конструктор, чтобы захватить идентификатор в этом индексе массива в вашем Article class вы не должны иметь массив изображений static в классе объектов.

Изменить Article класс выглядеть следующим образом:

public class Article { 
    ... 
    int imageID; 
    public Article(int imageID) { 
     this.imageID = imageID; 
    } 
    public int getImageID() { 
     return imageID; 
    } 
    ... 
} 

Теперь, когда вы Переберите и добавить свои статьи он хотел бы, как это:

for (int i = 0; i < imageIDArray.length; i++) { 
    articles.add(new Article(imageIDArray[i]); 
} 

Теперь вы устанавливаете imageID, независимо от того, какое значение находится в вашем imageIDArray, как только вы находитесь в методе onBindViewHolder() вашего RecyclerView, вы можете легко установить правильное изображение с помощью

setImageDrawable(ContextCompat.getDrawable(context, article(i).getImageID));

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