java - 如何使用优先级(字符串)Android 对自定义列表进行排序

标签 java android

我有一个模型类列表,其中有一个名为priority(String)的变量,列表中的每个项目共享3个公共(public)优先级(高、低、中)。我的问题是,我想使用其项目优先级(字符串)对列表进行排序。例如。所有高优先级应移至顶部,中优先级应移至中,低优先级应移至最后。提前致谢。

public class Main extends Activity {
    private ArrayList<Model> listOfModel = new ArrayList<>();

    private void setData(){
        listOfModel.addAll(getDataFromServer());
        Collections.sort(listOfModel); //sort using priority 
    }
}

public class Model {
    private String name;
    private String score;
    private String priority;//HIGH,MEDIUM,LOW

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getScore() {
        return score;
    }

    public void setScore(String score) {
        this.score = score;
    }

    public String getPriority() {
        return priority;
    }

    public void setPriority(String priority) {
        this.priority = priority;
    }
}

最佳答案

创建一个自定义比较器以按优先级递增顺序排序,即按照低、中、高的顺序

 Collections.sort(listOfModel, new Comparator<Model>() {
    @Override
    public int compare(Model m1, Model m2) {
        String p1 = m1.getPriority();
        String p2 = m2.getPriority();
        if(p1 == null) return 1;
        if(p2 == null) return -1; 
        if(p1.equals(p2)) return 0;
        if(p1.equals("LOW") && (p2.equals("MEDIUM") || p2.equals("HIGH")))
            return -1;
        if(p1.equals("MEDIUM") && p2.equals("HIGH"))
            return -1;
        return 1;
    }
 });

关于java - 如何使用优先级(字符串)Android 对自定义列表进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41485200/

相关文章:

java - While 循环字符串检查

android - NestedScrollView 中带有 RecyclerView 的 ItemTouchHelper : Drag scrolling not work

android - View 中的 Xamarin Android EggsToGo(滑动手势)监听器不适用于 ListView

java - Callable 如何防止 call() 返回值

android - 计算可绘制文件夹中以特定字符串开头的项目

java - 将元数据添加到现有 pdf 文件

java - Android - 使用 ViewGroup 的 NullPointerException

java - 无法将类型 [...] 编码(marshal)为元素,因为它缺少 @XmlRootElement 注释

java - 在 Android Room 中使用 @Insert 注释跳过 null

Android模拟器多点触控