2

Drawable に約 300 枚の画像があり、それらをリストビューに表示する必要がありますが、スクロールが遅すぎます。オフライン アプリケーションの lazyLoading を使用する方法はありますか。

これが私のgetViewメソッドです-画像を表示しない場合、リストビューは正常にスクロールしています。

    @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;
}'
4

2 に答える 2

0

これらは、コードのスクロールが遅くなる要因の一部である可能性があります。

  1. setImageResource() は、UI スレッドでビットマップの読み取りとデコードを行うため、レイテンシーの問題が発生する可能性があります。それが懸念される場合は、代わりに setImageDrawable(android.graphics.drawable.Drawable) または setImageBitmap(android.graphics.Bitmap) と BitmapFactory の使用を検討してください。

  2. 画像のサイズと解像度もスクロールが遅くなる原因となる可能性があります。大きな画像のサムネイル画像を作成して使用してみてください。

  3. 完全なデータをロードする代わりに、ページネーションを使用してみてください。

于 2014-04-01T05:27:39.617 に答える