【问题标题】:Android ListView with installed application lists array带有已安装应用程序列表数组的 Android ListView
【发布时间】:2015-09-04 13:28:31
【问题描述】:

我在处理一段代码时遇到了很多麻烦。我正在搜索带有已安装应用程序列表列表的列表视图。我已经搜索了很多。后来我找到了一些代码。我不知道这里发生了什么。它只是粉碎... 请不要嘲笑我的代码。

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

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

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

【问题讨论】:

标签: android listview package-managers


【解决方案1】:

这个应该可以的:

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-loop 替换了 while-loop 和迭代器)

【讨论】:

  • 是的,是的,是的……它有效。使用 android.R.layout.simple_list_item_1。谢谢兄弟。
  • 但是你能告诉我list_item_1和list_item_2的区别吗?
  • 好的,伙计。我明白了。 stackoverflow.com/questions/11722885/…
  • 是的 simple_list_item_2 是 2 行。它不适用于(据我所知)ArrayAdapter(因为数组只有一维),但使用 SimpleCursorAdapter。
【解决方案2】:

您可能应该查看您正在编写的代码中发生了什么。但是有一个“明显”的错误 - 您正在为每个项目重置 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);

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-13
  • 2015-09-17
  • 1970-01-01
  • 2011-09-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多