您好,我正在做示例项目,因为我遇到了像 listitem 显示一些垃圾值这样的问题。不知道怎么解决。谁能帮帮我。
这是我的 Activity :
public class MainActivity extends Activity {
ListView app_List;
private ArrayList<AppInfo> infoList;
private ArrayAdapter<AppInfo> adpt;
@SuppressWarnings("unchecked")
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
app_List = (ListView)findViewById(R.id.listView1);
infoList = getListOfUserInstalledApps();
}
private ArrayList<AppInfo> getListOfUserInstalledApps() {
// TODO Auto-generated method stub
List<PackageInfo> apps = getPackageManager().getInstalledPackages(0);
System.out.println("No. of applications installed on the device: "+apps.size());
ArrayList<AppInfo> infoList1 = new ArrayList<AppInfo>();
for(int i=0;i<apps.size();i++) {
PackageInfo p = apps.get(i);
/*if ((!getSysPackages) && (p.versionName == null)) {
continue ; }*/
AppInfo info = new AppInfo();
//info.appname = p.applicationInfo.loadLabel(getPackageManager()).toString();
info.pname = p.packageName;
System.out.println("application name: "+info.pname);
//info.pname = p.packageName;
infoList1.add(info);
}
return infoList1;
}
static class AppInfo {
//private String appname = "";
private String pname = "";
//private String versionName = "";
//private int versionCode = 0;
//private Drawable icon;
}
@Override
protected void onResume() {
// TODO Auto-generated method stub
super.onResume();
adpt = new ArrayAdapter<AppInfo>(this,android.R.layout.simple_list_item_1, infoList);
app_List.setAdapter(adpt);
}
}
引用屏幕截图
最佳答案
什么是ListView
显示的不是垃圾,而是对象引用的人类表示AppInfo
。您有两种方法可以解决您的问题。您可以通过ArrayList<String>
而不是ArrayList<AppInfo>
到ArrayAdapter
,或覆盖getView
来自ArrayAdapter
。
编辑
如@Luksprog
建议(请参阅下面的评论)您也可以覆盖 AppInfo.toString()
为了返回pname
关于java - Listview 显示垃圾值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17609346/