2012-06-02 5 views
1

У меня есть 200 изображений в папке с ресурсами, которую я назвал их name_1.png, name_2.png. и у меня есть массив, в котором у меня мало таких чисел, как 2, 4 , 6 ,30 , 40 ... and so on.Как загрузить изображения из папки ресурсов в android listview

Я хочу загрузить изображение и текст в андроид listview и показать изображения в соответствии с номером из папки ресурсов.

Для этого я создал activity class и image adapter class для custom list view.

Я могу показать данные text view, но не изображения в соответствии с номерами данных массива.

Может ли кто-нибудь предложить мне, как это сделать. Я думаю, что мне нужно написать код в getview, чтобы изменить изображение.

Это getview метод, который я пытался

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    convertView = mInflater.inflate(mViewResourceId, null); 


    TextView tv1 = (TextView)convertView.findViewById(R.id.tvtype); 
    TextView tv2 = (TextView)convertView.findViewById(R.id.tvnumber); 
    ImageView i1= (ImageView)convertView.findViewById(R.id.ivlfirst); 
    //int i = Integer.parseInt("normal_"+mStrings.get(position)+".png"); 

i1.setBackgroundResource("normal_"+mStrings.get(position)+".png"); 
    tv1.setText(mStrings1.get(position)); 
    tv2.setText(mStrings.get(position)); 
    return convertView; 
} 
+0

в папке с ресурсами означает 'res/drawable /' right? –

+0

да, это в res/drawable/ – MADDY

+0

сделайте int массив изображения. –

ответ

0

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

Вы должны рассмотреть возможность размещения изображений в папке с ресурсами, к которой вы можете получить доступ, как к обычной файловой системе. Посмотрите на AssetManager.

+0

ok sir. Я переместил свои изображения в папку с ресурсами теперь, как показал, что я делаю , вы можете показать мне код sir – MADDY

0

Попробуйте это, если вы хотите получать изображения с assets:

InputStream is = ctx.getAssets().open("normal_"+mStrings.get(position)+".png"); 
Drawable d = Drawable.createFromStream(is, "resourceName"); 
i1.setBackgroundDrawable(d); //i1 is your imageView 

надеюсь, что это помогает !!

+0

Я получаю исключение нулевого указателя – MADDY

0

Это просто просто сделать, как указано ниже в вашем GetView() метод

String yourimagename="normal_"+ mStrings.get(position); // In this no need of image extension like .png,.jpg etc 

int resImgId= YourActivityName.this.getResources().getIdentifier("Your Package Name:drawable/" +yourimagename, null, null); 

или попробовать этот

int resImgId= YourActivityName.this.getResources().getIdentifier("Your Package Name:drawable/" +yourimagename, null, null); 

или попробовать этот

int resImgId= context.getResources().getIdentifier("Your Package Name:drawable/" +yourimagename, null, null); 
i1.setImageResource(resImgId); 
+0

ошибка такой же ошибки: метод getResources() не определен для типа ImageAndTextAdapter – MADDY

+0

mStrings.get (position), что он возвращает значение String или целочисленное значение и присоединитесь к http://chat.stackoverflow.com/rooms/11936/android-lite для обсуждения, где мы обсудим больше, а не комментарий – Khan

+0

, пожалуйста, проверьте этот код на пасте на странице. 5/52 – MADDY

0

Если вы хотите для использования изображения из выпадающей папки на основе его имени (получение идентификатора ресурса из r Имя esource) используют общественное ИНТ getIdentifier (имя String, String defType, String defPackage) который возвращает идентификатор ресурса для данного имени ресурса, как:

int image = getResources().getIdentifier(image_name, "drawable",getPackageName()); 
ImageView i1= (ImageView)convertView.findViewById(R.id.ivlfirst); 
i1.setBackgroundResource(image); 

Для вашего конкретного случая вы можете использовать:

i1.setBackgroundResource(getResources().getIdentifier("normal_"+mStrings.get(position), "drawable",getPackageName())); 
+0

@MADDY сообщите мне, если это сработало вы :) –

0

Integer array Take One для R.drawable.imageView1......200 и передать его значение как

private Integer[] Imgid = {R.drawable.imageview1,....,200 }; 
    i1.setBackgroundResource(Imgid[j]); 
Смежные вопросы