我正在制作一项活动,以在设备上显示已安装的应用及其图标的列表。 我按照这里的说明进行了操作:http://www.androidsnippets.com/get-installed-applications-with-name-package-name-version-and-icon。 然后我为返回的ArrayList设置了ListAdapter,但我得到的就是这个 http://farm9.staticflickr.com/8677/16010593916_0f5c237348_b.jpg (这是我的班级名称和活动名称) 这是代码
public class ShortcutsActivity extends ListActivity {
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
ArrayList<PInfo> packages = getPackages();
setListAdapter(new ArrayAdapter<PInfo>(this, android.R.layout.simple_list_item_1, packages));
}
class PInfo {
private String appname = "";
private String pname = "";
private String versionName = "";
private int versionCode = 0;
private Drawable icon;
}
private ArrayList<PInfo> getPackages() {
ArrayList<PInfo> apps = getInstalledApps(false); /* false = no system packages */
return apps;
}
private ArrayList<PInfo> getInstalledApps(boolean getSysPackages) {
ArrayList<PInfo> res = new ArrayList<PInfo>();
List<PackageInfo> packs = getPackageManager().getInstalledPackages(0);
for(int i=0;i<packs.size();i++) {
PackageInfo p = packs.get(i);
if ((!getSysPackages) && (p.versionName == null)) {
continue ;
}
PInfo newInfo = new PInfo();
newInfo.appname = p.applicationInfo.loadLabel(getPackageManager()).toString();
newInfo.pname = p.packageName;
newInfo.versionName = p.versionName;
newInfo.versionCode = p.versionCode;
newInfo.icon = p.applicationInfo.loadIcon(getPackageManager());
res.add(newInfo);
}
return res;
}
} 难道我做错了什么? 对于这个可能重复的问题很抱歉,但我已经搜索了答案,但是在获得ArrayList后我似乎不知道该怎么做,因为我是新手到Android,还有很多东西要学习。
答案 0 :(得分:0)
目前在你的TextView中(我猜你的android.R.layout.simple_list_item_1包含一个TextView)你可能正在将Text设置为你的PInfo对象.toString()。
由于您的自定义类没有覆盖toString() - 方法Android / Java不知道要显示什么,并显示默认实现,即:
getClass().getName() + '@' + Integer.toHexString(hashCode())
要使listitem显示您的信息,您必须覆盖toString() - PInfo中的方法:
@Override
public String toString(){
return appname + ", " + pname + ", " + versionName + "(" + versionCode + ")";
}
这当然只是一个例子,只是实现良好布局的第一步。
根据官方Java文档,您的toString() - 方法应该如下:
返回对象的字符串表示形式。通常,toString方法返回一个&#34;文本表示&#34;的字符串。这个对象。结果应该是一个简洁但信息丰富的表示,便于人们阅读。建议所有子类都重写此方法。
答案 1 :(得分:-1)