根据复选框选择对Android ListView进行排序

时间:2015-05-31 20:40:05

标签: android sorting android-listview

我的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进行排序的最简单和/或最快的方法是将所有选中的项目置于其上?

1 个答案:

答案 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()