解决方案 »

  1.   

    Activity中的代码
    public class MainActivity extends Activity { private boolean display = true;
    private ArrayList<AppInfo> appList = new ArrayList<AppInfo>(); // 用来存储获取的应用信息数据
    private ListView listview;
    private final static String TAG="MainActivity1";
    private View view;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);


    plintPkgAndCls(getPackageInfos());
    listview=(ListView) findViewById(R.id.listGesture);
    listview.setAdapter(new TextImageAdapter(this,this.display)); /*LinearLayout layout1=(LinearLayout)findViewById(R.id.linear1);
    layout1.addView(new Surfaceview1(getApplicationContext()));*/


    }

    @Override
    public void onBackPressed() {
    // TODO Auto-generated method stub
    display=false;
    super.onBackPressed();

    }

    private void plintPkgAndCls(List<PackageInfo> PackageInfos) {
    for (int i = 0; i < PackageInfos.size(); i++) {
    AppInfo tmpInfo = new AppInfo();

    tmpInfo.setPackageName(PackageInfos.get(i).packageName);
    tmpInfo.setMainActivityName(PackageInfos.get(i).activities[0].name);
    tmpInfo.setAppIcon(PackageInfos.get(i).applicationInfo
    .loadIcon(getPackageManager()));
    tmpInfo.setAppName(PackageInfos.get(i).applicationInfo
    .loadLabel(getPackageManager()).toString());
    appList.add(tmpInfo);
    }

    }

    private List<PackageInfo> getPackageInfos() {

    List<PackageInfo> apps = new ArrayList<PackageInfo>();  
        PackageManager pManager = this.getPackageManager();  
        //获取手机内所有应用  
        List<PackageInfo> paklist = pManager.getInstalledPackages(PackageManager.GET_UNINSTALLED_PACKAGES|PackageManager.GET_ACTIVITIES);  
        for (int i = 0; i < paklist.size(); i++) {  
            PackageInfo pak = paklist.get(i);  
            //判断是否为非系统预装的应用程序  
            if ((pak.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) <= 0) {  
                // customs applications  
                apps.add(pak);  
            }  
        }  
        return apps;
    } // 自定义listview显示图标和应用名
    private class TextImageAdapter extends BaseAdapter {
    private Context mContext;
    private boolean display; public TextImageAdapter(Context context,boolean display) {
    this.mContext = context;
    this.display=display;
    } /**
     * 元素的个数
     */
    @Override
    public int getCount() {
    return appList.size();
    } @Override
    public Object getItem(int position) {
    return null;
    } @Override
    public long getItemId(int position) {
    return 0;
    } // 用以生成在ListView中展示的一个个元素View
    @Override
    @SuppressLint("NewApi")
    public View getView(int position, View convertView, ViewGroup parent) {
    // LayoutInflater minflater = getLayoutInflater();
    // convertView = minflater.inflate(R.layout.gg, null);
    // 优化ListView
    if (convertView == null) {
    convertView = LayoutInflater.from(mContext).inflate(
    R.layout.gestureitem, null);
    ItemgestureViewCache viewCache = new ItemgestureViewCache();
    viewCache.mText1 = (TextView) convertView
    .findViewById(R.id.text1);
    viewCache.mText2 = (TextView) convertView
    .findViewById(R.id.text2);
    viewCache.mgestureImage = (LinearLayout) convertView
    .findViewById(R.id.gestureImage);
    convertView.setTag(viewCache);
    }
    ItemgestureViewCache cache = (ItemgestureViewCache) convertView.getTag();
    // 设置文本和图片,然后返回这个View,用于ListView的Item的展示
    cache.mText1.setText(R.string.open);
    cache.mText2.setText(appList.get(position).getAppName());
    cache.mgestureImage.addView(new Myview(getApplicationContext(),this.display));
    return convertView;
    }
    } // 元素的缓冲类,用于优化ListView
    private static class ItemgestureViewCache {
    public TextView mText1;
    public TextView mText2;
    public LinearLayout mgestureImage;
    }}