2015-08-31 1 views
0

Я пытаюсь получить динамические изображения из базы данных и поместить его в адаптерДинамическая настройка изображения в пользовательском списке адаптера

моя база данных имеет столбец (изображение) имеет путь каждой картинки

как @ Drawable/pic8

Я попытался запустить приложение с ним, но его падение

package com.example.tarekhy; 

import java.io.File; 
import android.app.Activity; 
import android.graphics.Bitmap; 
import android.graphics.BitmapFactory; 
import android.graphics.drawable.Drawable; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.ArrayAdapter; 
import android.widget.ImageView; 
import android.widget.TextView; 

public class CustomListAdapter extends ArrayAdapter<String> { 

private final Activity context; 
private final String[] itemname; 
private final String[] imgid; 

public CustomListAdapter(Activity context, String[] itemname, String[] imgid) { 
    super(context, R.layout.mylist, itemname); 
    // TODO Auto-generated constructor stub 

    this.context=context; 
    this.itemname=itemname; 
    this.imgid=imgid; 
} 

public View getView(int position,View view,ViewGroup parent) { 
    LayoutInflater inflater=context.getLayoutInflater(); 
    View rowView=inflater.inflate(R.layout.mylist, null,true); 

    TextView txtTitle = (TextView) rowView.findViewById(R.id.item); 
    ImageView imageView = (ImageView) rowView.findViewById(R.id.icon); 
    TextView extratxt = (TextView) rowView.findViewById(R.id.textView1); 
    int imageResource = context.getResources().getIdentifier(imgid[position], null, context.getPackageName()); 
    Drawable res = context.getResources().getDrawable(imageResource); 
    txtTitle.setText(itemname[position]); 
    imageView.setImageDrawable(res); 
    extratxt.setText("Description "+itemname[position]); 
    return rowView; 

}; 
} 
+0

Добавить stacktrace на ваш пост –

ответ

0

из-за вас не создать новый объект из класса ViewHolder .. Вы можете создать держатель и доступа O п это рассматривает

public static class ViewHolder { 
      public TextView txtTitle ; 
     public ImageView imageView; 
     public TextView extratxt; 


     } 

    View vi = convertView; 
       final ViewHolder holder; 
    public View getView(int position,View view,ViewGroup parent) { 
     LayoutInflater inflater=context.getLayoutInflater(); 
       try { 
        if (convertView == null) { 
         vi = inflater.inflate(R.layout.mylist, null,true); 
         holder = new ViewHolder(); 
         vi.setTag(holder); 
        } else { 
         holder = (ViewHolder) vi.getTag(); 
        } 

         holder.txtTitle = (TextView) vi.findViewById(R.id.item); 
         holder.imageView= (ImageView) vi.findViewById(R.id.item); 
         holder.extratxt= (TextView) vi.findViewById(R.id.item); 
         int imageResource = context.getResources().getIdentifier(imgid[position], null, context.getPackageName()); 
         Drawable res = context.getResources().getDrawable(imageResource); 
         holder.txtTitle.setText(itemname[position]); 
         holder.imageView.setImageDrawable(res); 
         holder.extratxt.setText("Description "+itemname[position]); 
         return rowView; 


    } 
    }; 
0

насчет R.layout.myList ... Вы должны использовать идентификатор ресурса элемента .. что-то вроде R.layout.mylist_item Кстати, это лучше, если вы recylce мнения. вместо того, чтобы раздувать их каждый раз .. использование Viewholder View еще лучше