Skip to content

Commit abb6e29

Browse files
authored
Update FileListAdapter.java
1 parent 11174ac commit abb6e29

1 file changed

Lines changed: 42 additions & 35 deletions

File tree

Lines changed: 42 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -1,54 +1,61 @@
1-
2-
// FileListAdapter.java
3-
package com.example.rootfilepicker;
4-
5-
import android.content.Context;
6-
import android.view.*;
7-
import android.widget.*;
8-
import java.io.File;
9-
import java.util.List;
10-
11-
public class FileListAdapter extends BaseAdapter {
1+
public class FileListAdapter extends BaseAdapter implements Filterable {
2+
private List<FileItem> originalList;
3+
private List<FileItem> filteredList;
124
private final Context context;
13-
private final List<FileItem> items;
14-
private final List<FileItem> selected;
155

16-
public FileListAdapter(Context context, List<FileItem> items, List<FileItem> selected) {
6+
public FileListAdapter(Context context, List<FileItem> data) {
177
this.context = context;
18-
this.items = items;
19-
this.selected = selected;
8+
this.originalList = data;
9+
this.filteredList = new ArrayList<>(data);
2010
}
2111

2212
@Override
2313
public int getCount() {
24-
return items.size();
14+
return filteredList.size();
2515
}
2616

2717
@Override
28-
public Object getItem(int i) {
29-
return items.get(i);
18+
public Object getItem(int position) {
19+
return filteredList.get(position);
3020
}
3121

3222
@Override
33-
public long getItemId(int i) {
34-
return i;
23+
public long getItemId(int position) {
24+
return position;
3525
}
3626

3727
@Override
38-
public View getView(int i, View view, ViewGroup viewGroup) {
39-
if (view == null) {
40-
view = LayoutInflater.from(context).inflate(R.layout.item_file, viewGroup, false);
41-
}
42-
43-
TextView name = view.findViewById(R.id.name);
44-
ImageView icon = view.findViewById(R.id.icon);
45-
ImageView check = view.findViewById(R.id.check);
46-
47-
File file = items.get(i).getFile();
48-
name.setText(file.getName());
49-
icon.setImageResource(file.isDirectory() ? android.R.drawable.ic_menu_agenda : android.R.drawable.ic_menu_save);
50-
check.setVisibility(selected.contains(items.get(i)) ? View.VISIBLE : View.INVISIBLE);
28+
public View getView(int position, View convertView, ViewGroup parent) {
29+
// inflate and bind view...
30+
}
5131

52-
return view;
32+
@Override
33+
public Filter getFilter() {
34+
return new Filter() {
35+
@Override
36+
protected FilterResults performFiltering(CharSequence constraint) {
37+
List<FileItem> results = new ArrayList<>();
38+
if (constraint == null || constraint.length() == 0) {
39+
results.addAll(originalList);
40+
} else {
41+
String query = constraint.toString().toLowerCase();
42+
for (FileItem item : originalList) {
43+
if (item.getFile().getName().toLowerCase().contains(query)) {
44+
results.add(item);
45+
}
46+
}
47+
}
48+
FilterResults filterResults = new FilterResults();
49+
filterResults.values = results;
50+
return filterResults;
51+
}
52+
53+
@Override
54+
protected void publishResults(CharSequence constraint, FilterResults results) {
55+
filteredList.clear();
56+
filteredList.addAll((List<FileItem>) results.values);
57+
notifyDataSetChanged();
58+
}
59+
};
5360
}
5461
}

0 commit comments

Comments
 (0)