Android 滚动时安装的应用程序列表视图延迟

Android 滚动时安装的应用程序列表视图延迟,android,listview,Android,Listview,我得到一个活动,启动所有安装的应用程序与应用程序图标和名称列表,它的工作很好,只是非常滞后时,滚动通过应用程序。有什么办法让它顺利吗?这是我的密码,谢谢 public class AppListsActivity extends ListActivity{ static final String TAG = "AppListsActivity"; private Context self = this; public static boolean progressBarS

我得到一个活动,启动所有安装的应用程序与应用程序图标和名称列表,它的工作很好,只是非常滞后时,滚动通过应用程序。有什么办法让它顺利吗?这是我的密码,谢谢

public class AppListsActivity extends ListActivity{
    static final String TAG = "AppListsActivity";
    private Context self = this;
    public static boolean progressBarStatus = false;

    SharedPreferences.Editor editor;
    PackageManager pm;
    AppAdapter adapter = null;

    @Override
    public void onCreate(Bundle savedInstanceState) {       
        super.onCreate(savedInstanceState);
        setContentView(R.layout.apps_list);
        ListView lV = (ListView)findViewById(android.R.id.list);
        lV.setScrollingCacheEnabled(false);

        pm = getPackageManager();
        Intent main=new Intent(Intent.ACTION_MAIN, null); 
        main.addCategory(Intent.CATEGORY_LAUNCHER);

        List<ResolveInfo> launchables = pm.queryIntentActivities(main, 0);
        Collections.sort(launchables,new ResolveInfo.DisplayNameComparator(pm)); 

        adapter = new AppAdapter(pm, launchables);
        setListAdapter(adapter);

        progressBarStatus = true;
    }
    @Override
    protected void onListItemClick(ListView listView, View v, int position, long id) {
        //super.onListItemClick(l, v, position, id);

        ResolveInfo launchable = adapter.getItem(position);
        ActivityInfo activity = launchable.activityInfo;
        String selectionPname = activity.applicationInfo.packageName;
        String selection = activity.applicationInfo.loadLabel(pm).toString();
        Drawable selectionIcon = activity.applicationInfo.loadIcon(pm);

        editor = self.getSharedPreferences(WidgetConfigureActivity.PREFS_NAME, 0).edit();
        //switch (SettingsActivity.btnShortcutNo) {
        switch (WidgetConfigureActivity.btnShortcutNo) {
        case 1:
            //SettingsActivity.textTime.setText(selection);
            WidgetConfigureActivity.textTime.setText(selection);
            WidgetConfigureActivity.iconShortcutTime.setImageDrawable(selectionIcon);
            editor.putString("shortcutTimeWidget", selectionPname);         
            //editor.putString("shortcutTime", selection);
            editor.commit();
            MyWidgetProvider.mFisrtReboot = true;
            finish();
            break;
        default: 
            break;
        }       
    }
    private static class ViewHolder {
        public TextView label;
        public ImageView icon;
    }
    private class AppAdapter extends ArrayAdapter<ResolveInfo> {
        private PackageManager pm = null;
        Bitmap bmIcon;

        AppAdapter(PackageManager pm, List<ResolveInfo> apps) {
            super(AppListsActivity.this, R.layout.list_row, apps);
            this.pm = pm;
        }       
        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            View v = convertView;
            if (v==null) {
                v = newView(parent);
                ViewHolder viewHolder = new ViewHolder();
                viewHolder.label = (TextView) v.findViewById(R.id.label);
                viewHolder.icon = (ImageView) v.findViewById(R.id.icon);
                v.setTag(viewHolder);
            }
            ViewHolder holder = (ViewHolder) v.getTag();
            bmIcon = ((BitmapDrawable)getItem(position).loadIcon(pm)).getBitmap();
            bmIcon = Bitmap.createScaledBitmap(bmIcon, 5, 5, true);
            bindView(position, holder);       
            return(v);
        }       
        private View newView(ViewGroup parent) {
            return(getLayoutInflater().inflate(R.layout.list_row, parent, false));
        }       
        private void bindView(int position, ViewHolder holder) {                                 
            holder.label.setText(getItem(position).loadLabel(pm));              
            //holder.icon.setImageDrawable(getItem(position).loadIcon(pm));
            holder.icon.setImageBitmap(bmIcon);
        }
    }
公共类AppListsActivity扩展了ListActivity{
静态最终字符串标记=“AppListsActivity”;
私有上下文self=this;
公共静态布尔progressBarStatus=false;
SharedReferences.Editor;
包装经理;
AppAdapter适配器=空;
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.apps\u列表);
ListView lV=(ListView)findViewById(android.R.id.list);
lV.SetScrolingCacheEnabled(假);
pm=getPackageManager();
Intent main=新的Intent(Intent.ACTION_main,空);
main.addCategory(Intent.CATEGORY_启动器);
List launchables=pm.querytentActivities(main,0);
排序(launchables,new ResolveInfo.DisplayNameComparator(pm));
适配器=新AppAdapter(pm,可启动设备);
setListAdapter(适配器);
progressBarStatus=true;
}
@凌驾
受保护的void onListItemClick(ListView ListView、视图v、int位置、长id){
//super.onListItemClick(左、右、位置、id);
ResolveInfo launchable=adapter.getItem(位置);
ActivityInfo activity=launchable.ActivityInfo;
字符串selectionPname=activity.applicationInfo.packageName;
字符串选择=activity.applicationInfo.loadLabel(pm.toString();
Drawable selectionIcon=activity.applicationInfo.loadIcon(pm);
editor=self.getSharedReferences(WidgetConfigureActivity.PREFS_名称,0).edit();
//开关(设置活动。BTN端口号){
开关(WidgetConfigureActivity.btnSortCutNo){
案例1:
//SettingsActivity.textTime.setText(选择);
WidgetConfigureActivity.textTime.setText(选择);
WidgetConfigureActivity.iconShortcutTime.setImageDrawable(选择图标);
putString(“shortcutTimeWidget”,selectionPname);
//编辑器.putString(“快捷键时间”,选择);
commit();
MyWidgetProvider.mFisrtReboot=true;
完成();
打破
违约:
打破
}       
}
私有静态类视图持有者{
公共文本视图标签;
公共图像视图图标;
}
私有类AppAdapter扩展了ArrayAdapter{
私有包管理器pm=null;
位图bmIcon;
AppAdapter(PackageManager pm,列出应用程序){
super(AppListsActivity.this、R.layout.list\u行、apps);
this.pm=pm;
}       
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
视图v=转换视图;
如果(v==null){
v=新视图(父级);
ViewHolder ViewHolder=新ViewHolder();
viewHolder.label=(TextView)v.findViewById(R.id.label);
viewHolder.icon=(ImageView)v.findViewById(R.id.icon);
v、 setTag(视图持有者);
}
ViewHolder=(ViewHolder)v.getTag();
bmIcon=((BitmapDrawable)getItem(position).loadIcon(pm)).getBitmap();
bmIcon=Bitmap.createScaledBitmap(bmIcon,5,5,true);
bindView(位置、支架);
返回(v);
}       
私有视图新建视图(视图组父视图){
返回(getLayoutFlater().充气(R.layout.list_行,父项,false));
}       
私有void bindView(int位置,ViewHolder){
holder.label.setText(getItem(position).loadLabel(pm));
//holder.icon.setImageDrawable(getItem(position).loadIcon(pm));
holder.icon.setImageBitmap(bmIcon);
}
}