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);
}
}