试试这样的:
在 AllAppsActivity.java 的 onCreate 方法中,添加以下代码行:
setListAdapter(new CustomArrayAdapter(this, arrayOfApps ,arrayOfAppIcons));
其中 arrayOfApps 是字符串(应用名称)数组,arrayOfAppIcons 是对应应用图标的数组。
然后为 CustomArrayAdapter.java 创建代码:
public class CustomArrayAdapter extends ArrayAdapter<String> {
private final Context context;
private final String [] appnames;
private final IconType [] appicons; //Replace IconType by your icon images' datatype
public CustomArrayAdapter(Context context, String[] appnames,IconType[] appicons ) {
super(context, R.layout.app_list_item_layout, appnames);
this.context = context;
this.appnames = appnames;
this.appicons = appicons;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View rowView = inflater.inflate(R.layout.app_list_item_layout, parent, false);
//The following variables are references to the elements within each list item displayed (in app_list_item_layout xml file)
TextView appNameView = (TextView) rowView.findViewById(R.id.appName);
ImageView appIconView = (ImageView) rowView.findViewById(R.id.appIcon);
//If you are using something else to dislay app icons, replace ImageView by corresponding datatype
Switch appSwitch = (Switch) rowView.findViewById(R.id.app_switch);
rowView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// Do whatever u want here on any List item click
// the variable "position" indicates which particular list item was clicked
}
});
return rowView;
}
}
注意,app_list_item_layout.xml 是一个布局 xml 文件,您可以在其中定义 列表中每个项目的布局样式。
在 AllAppsActivity.java 的 onCreate() 方法中,您应该将布局设置为您的主布局 xml 文件。
使用这个之后就不需要再使用你的 onListItemClick 方法了。
编辑: 在您的主布局 xml 文件中,您应该有一个 ListView 元素。让它的 id 为 appList。然后把这段代码 sn-p 放在你的 AllAppsActivity.java 的 onCreate() 方法中:
appListView = (ListView)findViewById(R.id.appList); //appList element exists in your main layout xml file for your activity
appListView.setItemsCanFocus(true);
appListView.setAdapter(new CustomArrayAdapter(this, arrayOfApps ,arrayOfAppIcons));
我之前提到的代码是一个更通用的版本,但是你应该在你的 AllAppsActivity.java 中使用这个编辑过的代码。