Android 包含已安装应用程序列表数组的 ListView

Android ListView with installed application lists array

我在处理一段代码时遇到了很多麻烦。我正在搜索包含已安装应用程序名称列表的列表视图。我已经搜索了很多。后来我找到了一些代码。我不知道这里发生了什么。简直碾压... 请不要笑我的代码。

listView = (ListView)findViewById(R.id.listView);
    PackageManager packageManager = this.getPackageManager();
    List<ApplicationInfo> appList = packageManager.getInstalledApplications(0);
    List<String> myStrinrgArray = new ArrayList<String>();
    Iterator<ApplicationInfo> it = appList.iterator();
    while (it.hasNext()){
        ApplicationInfo applicationInfo = (ApplicationInfo)it.next();
        String appName = packageManager.getApplicationLabel(applicationInfo).toString();
        myStrinrgArray.add(appName);
        ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_2, myStrinrgArray);
        listView.setAdapter(arrayAdapter);
    }

如果可能,请帮助任何人...我会很高兴。

注意:我已经在模拟器中启动了它

您可能应该查看您正在编写的代码中发生了什么。但是有一个 "obvious" 错误 - 您正在为每个项目重置 ArrayAdapter,这是行不通的。

在循环中尝试这个改变:

while (it.hasNext()){
    ApplicationInfo applicationInfo = (ApplicationInfo)it.next();
    String appName = packageManager.getApplicationLabel(applicationInfo).toString();
    myStrinrgArray.add(appName);
}
ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_2, myStrinrgArray);
listView.setAdapter(arrayAdapter);

这个应该有效:

listView = (ListView)findViewById(R.id.listView);
PackageManager packageManager = this.getPackageManager();
List<ApplicationInfo> appList = packageManager.getInstalledApplications(0);
List<String> myStrinrgArray = new ArrayList<>();

for (ApplicationInfo applicationInfo : appList) {
    String appName = packageManager.getApplicationLabel(applicationInfo).toString();
    myStrinrgArray.add(appName);
}

ArrayAdapter<String> arrayAdapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1,
            myStrinrgArray);
listView.setAdapter(arrayAdapter);

请注意,对于单行列表项,您必须使用 simple_list_item_1。 当然,在循环之后创建 arrayAdapter! (我用更简单的 for 循环替换了 while 循环和迭代器)