2015-09-04 58 views
0

我在代碼塊中遇到了很多麻煩。我正在搜索已安裝的應用程序名稱列表的列表視圖。我搜查了很多。後來我找到了一些代碼。我不知道這裏發生了什麼事。它只是粉碎... 請不要嘲笑我的代碼。已安裝應用程序列表陣列的Android ListView

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

請幫助任何人,如果可能的話......我會很高興。

注:我在模擬器

+0

你可以發佈錯誤消息/日誌嗎? – acostela

+0

鏈接[link](https://www.dropbox.com/s/ug4yz1asokgnr4x/LogCat.txt?dl=0) – user5281686

+0

問題是否修復? –

回答

0

這個應該工作:

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管理單行-listItems中。 當然,在循環之後創建arrayAdapter! (我更換了while循環和迭代器更容易for -loop)

+0

是的是的...它的工作原理。使用android.R.layout.simple_list_item_1。謝了,兄弟。 – user5281686

+0

沒問題! ;-) –

+0

但你能告訴我list_item_1和list_item_2之間的區別嗎? – user5281686

0

你或許應該看看什麼是你正在寫的代碼發生啓動它。但是有一個「明顯」的錯誤 - 你正在重置每個項目的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); 
+0

錯誤... LogCat鏈接:(https://www.dropbox.com/s/ouyn0ufvxut4lmu/LogCat2.txt?dl=0) – user5281686

+0

這意味着「simple_list_item_2」不是「 TextView' - 看到這個:http://stackoverflow.com/questions/9280965/arrayadapter-requires-the-resource-id-to-be-a-textview-xml-problems – Jim

相關問題