列表从drawable加载图像时滚动速度变慢

时间:2014-03-30 17:52:49

标签: android listview imageview drawable android-lazyloading

我在Drawable中有大约300个图像,需要在列表视图中显示它们,但滚动速度太慢。有没有办法使用lazyLoading离线应用程序。

这是我的getView方法 - 如果我没有显示图像,则listview滚动正常。

    @Override
public View getView(int position, View convertView, ViewGroup parent) {
    // TODO Auto-generated method stub
    View vi = convertView;
    ViewHolder holder;

    if(convertView==null){

        /****** Inflate tabitem.xml file for each row ( Defined below ) *******/
        vi = inflater.inflate(R.layout.pos_list_item, null);

        /****** View Holder Object to contain tabitem.xml file elements ******/

        holder = new ViewHolder();
        holder.text = (TextView) vi.findViewById(R.id.textView1);
        holder.text1=(TextView)vi.findViewById(R.id.textView2);
        holder.image=(ImageView)vi.findViewById(R.id.imageView1);


       /************  Set holder with LayoutInflater ************/
        vi.setTag( holder );
    }
    else 
        holder=(ViewHolder)vi.getTag();

    if(data.size()<=0)
    {
        holder.text.setText("No Data");

    }
    else
    {
        /***** Get each Model object from Arraylist ********/
        tempValues=null;
        tempValues = (DataStructureList) data.get( position );

        /************  Set Model values in Holder elements ***********/

         holder.text.setText( tempValues.getPosName());
         holder.text1.setText( tempValues.getCatName());

         int resourceId1 = res.getIdentifier(tempValues.getPosImage()+"1", "drawable",     activity.getPackageName());
         holder.image.setImageResource(resourceId1);

         /******** Set Item Click Listner for LayoutInflater for each row *******/

    }
    return vi;
}'

2 个答案:

答案 0 :(得分:1)

 setImageResource (int resId) this runs on UI thread which may slow the UI.

使用

 setImageDrawable(<drawable>);

答案 1 :(得分:0)

这些可能是代码中慢速滚动的一些因素:

  1. setImageResource()在UI线程上进行Bitmap读取和解码,这可能会导致延迟打嗝。如果这是一个问题,请考虑使用setImageDrawable(android.graphics.drawable.Drawable)或setImageBitmap(android.graphics.Bitmap)和BitmapFactory。

  2. 图像的大小和分辨率也可能导致滚动速度慢,请尝试创建大图像的缩略图并使用。

  3. 尝试使用分页而不是加载完整数据。