我的ListView带有自定义适配器,带有checkBox,基于使用ViewHolder和以下checkBoxClickListener安装的应用程序列表:
CheckBox.OnClickListener checkBoxClickListener = new CheckBox.OnClickListener() {
public void onClick(View v) {
String packageName = (String) v.getTag();
boolean isChecked = ((CheckBox) v).isChecked();
if (isChecked) {
Main.getStorage().write(packageName, "1");
} else {
Main.getStorage().write(packageName, "0");
}
}
};
数据集基于从PackageManager.getInstalledPackages()获取的PackageInfo。
对ListView进行排序的最简单和/或最快的方法是将所有选中的项目置于其上?
答案 0 :(得分:3)
只是示例:
class App {
private String packageName;
private boolean checked;
// Other fields
// +accessor methods ..
public boolean isChecked()
{
return this.checked;
}
public void setChecked(boolean flag)
{
this.checked = flag;
}
}
并使用集合排序等应用列表,
Collections.sort(listApps, new Comparator<App>() {
public int compare(App a1, App a2) {
return (a1.isChecked() == a2.isChecked());
}
});
而不只是在列表适配器上调用notifyDatasetChanged()
。