sort best matching results

This commit is contained in:
REAndroid 2023-04-18 21:03:27 +02:00
parent 59d5279b7b
commit 83083c58d4

View File

@ -24,7 +24,7 @@ import com.reandroid.arsc.value.ValueType;
import java.util.*; import java.util.*;
import java.util.function.Predicate; import java.util.function.Predicate;
public class ReferenceResolver { public class ReferenceResolver{
private final EntryStore entryStore; private final EntryStore entryStore;
private final List<Entry> results; private final List<Entry> results;
private final Set<Integer> resolvedIds; private final Set<Integer> resolvedIds;
@ -49,7 +49,10 @@ public class ReferenceResolver {
} }
public List<Entry> resolveWithConfig(int referenceId, ResConfig resConfig){ public List<Entry> resolveWithConfig(int referenceId, ResConfig resConfig){
return resolveAll(referenceId, new ConfigFilter(resConfig)); ConfigFilter configFilter = new ConfigFilter(resConfig);
List<Entry> results = resolveAll(referenceId, configFilter);
results.sort(configFilter);
return results;
} }
public List<Entry> resolveAll(int referenceId){ public List<Entry> resolveAll(int referenceId){
return resolveAll(referenceId, (Predicate<Entry>)null); return resolveAll(referenceId, (Predicate<Entry>)null);
@ -112,7 +115,7 @@ public class ReferenceResolver {
return results; return results;
} }
public static class ConfigFilter implements Predicate<Entry>{ public static class ConfigFilter implements Predicate<Entry>, Comparator<Entry>{
private final ResConfig config; private final ResConfig config;
public ConfigFilter(ResConfig config){ public ConfigFilter(ResConfig config){
this.config = config; this.config = config;
@ -125,5 +128,17 @@ public class ReferenceResolver {
} }
return resConfig.isEqualOrMoreSpecificThan(this.config); return resConfig.isEqualOrMoreSpecificThan(this.config);
} }
@Override
public int compare(Entry entry1, Entry entry2) {
ResConfig config1 = entry1.getResConfig();
ResConfig config2 = entry1.getResConfig();
if (config.equals(config1)){
return -1;
}
if(config.equals(config2)){
return 1;
}
return 0;
}
} }
} }