mirror of
https://github.com/revanced/ARSCLib.git
synced 2025-04-30 06:14:25 +02:00
sort best matching results
This commit is contained in:
parent
59d5279b7b
commit
83083c58d4
@ -24,7 +24,7 @@ import com.reandroid.arsc.value.ValueType;
|
||||
import java.util.*;
|
||||
import java.util.function.Predicate;
|
||||
|
||||
public class ReferenceResolver {
|
||||
public class ReferenceResolver{
|
||||
private final EntryStore entryStore;
|
||||
private final List<Entry> results;
|
||||
private final Set<Integer> resolvedIds;
|
||||
@ -49,7 +49,10 @@ public class ReferenceResolver {
|
||||
}
|
||||
|
||||
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){
|
||||
return resolveAll(referenceId, (Predicate<Entry>)null);
|
||||
@ -112,7 +115,7 @@ public class ReferenceResolver {
|
||||
return results;
|
||||
}
|
||||
|
||||
public static class ConfigFilter implements Predicate<Entry>{
|
||||
public static class ConfigFilter implements Predicate<Entry>, Comparator<Entry>{
|
||||
private final ResConfig config;
|
||||
public ConfigFilter(ResConfig config){
|
||||
this.config = config;
|
||||
@ -125,5 +128,17 @@ public class ReferenceResolver {
|
||||
}
|
||||
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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user