Skip to content
This repository was archived by the owner on Jul 28, 2023. It is now read-only.

Commit a36b7c9

Browse files
committed
#82 | fix search to work like the filter
1 parent 84eabdc commit a36b7c9

File tree

1 file changed

+21
-9
lines changed

1 file changed

+21
-9
lines changed

LaLauncher/src/main/java/com/github/postapczuk/lalauncher/InstalledAppsActivity.java

Lines changed: 21 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@
2222
import java.util.ArrayList;
2323
import java.util.Collections;
2424
import java.util.List;
25+
import java.util.concurrent.locks.ReadWriteLock;
26+
import java.util.concurrent.locks.ReentrantReadWriteLock;
2527

2628
import static android.view.Window.FEATURE_ACTIVITY_TRANSITIONS;
2729
import static android.view.WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN;
@@ -34,11 +36,12 @@ public class InstalledAppsActivity extends Activity {
3436

3537
private EditText editTextFilter;
3638

39+
private ReadWriteLock lock = new ReentrantReadWriteLock();
40+
3741
@Override
3842
protected void onResume() {
3943
super.onResume();
4044
if (getActivities(getPackageManager()).size() - 1 != appsPosition.size()) {
41-
fetchAppList();
4245
editTextFilter.getText().clear();
4346
}
4447
}
@@ -68,23 +71,29 @@ protected void onCreate(Bundle savedInstanceState) {
6871
editTextFilter.addTextChangedListener(new TextWatcher() {
6972
@Override
7073
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
71-
74+
fetchAppList();
7275
}
7376

7477
@Override
7578
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
7679
String lowered = charSequence.toString().toLowerCase();
77-
(InstalledAppsActivity.this).adapter.getFilter().filter(charSequence);
80+
lock.readLock().lock();
7881
List<Pair<String, String>> list = new ArrayList<>();
7982
for (Pair<String, String> entry : appsPosition) {
80-
for (String word : entry.first.toLowerCase().split("\\s+")) {
81-
if (word.startsWith(lowered)) {
82-
list.add(entry);
83-
break;
83+
if (lowered.length() == 0) {
84+
list.add(entry);
85+
} else {
86+
for (String word : entry.first.toLowerCase().split("\\s+")) {
87+
if (word.startsWith(lowered)) {
88+
list.add(entry);
89+
break;
90+
}
8491
}
8592
}
8693
}
8794
appsPosition = list;
95+
(InstalledAppsActivity.this).adapter.getFilter().filter(charSequence);
96+
lock.readLock().unlock();
8897
}
8998

9099
@Override
@@ -111,10 +120,12 @@ public View getView(int position, View convertView, ViewGroup parent) {
111120
}
112121

113122
private void fetchAppList() {
123+
PackageManager packageManager = getPackageManager();
124+
List<ResolveInfo> activities = getActivities(packageManager);
125+
lock.writeLock().lock();
114126
appsPosition.clear();
115127
adapter.clear();
116-
PackageManager packageManager = getPackageManager();
117-
for (ResolveInfo resolver : getActivities(packageManager)) {
128+
for (ResolveInfo resolver : activities) {
118129
String appName = (String) resolver.loadLabel(packageManager);
119130
if (appName.equals("Light Android Launcher"))
120131
continue;
@@ -123,6 +134,7 @@ private void fetchAppList() {
123134
}
124135
listView.setBackgroundColor(getResources().getColor(R.color.colorBackgroundPrimary));
125136
setActions();
137+
lock.writeLock().unlock();
126138
}
127139

128140
private List<ResolveInfo> getActivities(PackageManager packageManager) {

0 commit comments

Comments
 (0)