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