Я пытаюсь найти элемент из imageAdapter, который расширяет BaseAdapter, который находится в Frangment, используя EditText в MainActivity. Мой план состоит в том, чтобы вызвать метод getFilter () BaseAdapter в методе onTextChanged. Для вызова getFilter () в MainActivity мне нужно сделать его stati c, а также imageAdapter, но при этом getLayoutInflator () попросит сделать imageAdapter не-stati c и @Override станет недействительным. Код как ниже
public class imageAdapater extends BaseAdapter implements Filterable
{
private List<String>originalData = null;
private List<String>filteredData = null;
private LayoutInflater mInflater;
private ItemFilter mFilter = new ItemFilter();
@Override
public int getCount()
{
return imageList.size();
}
@Override
public Object getItem(int i)
{
return imageList.get(i);
}
@Override
public long getItemId(int i)
{
return 0;
}
@Override
public View getView(int i, View view, ViewGroup viewGroup)
{
View galleryView = null;
if(galleryView == null)
{
galleryView = getLayoutInflater().inflate(R.layout.image_layout_for_gallery, viewGroup, false); //Problem occurs here when imageAdapter is made static
ImageView sampleImage = (ImageView) galleryView.findViewById(R.id.sampleImage);
TextView sampleImageName = (TextView) galleryView.findViewById(R.id.sampleImageName);
sampleImage.setImageURI(Uri.parse(imageList.get(i).toString()));
sampleImageName.setText(imageNameList.get(i));
}
return galleryView;
}
@Override
public Filter getFilter() //Problem occurs here when getFilter() is made static
{
return null;
}
private class ItemFilter extends Filter
{
@Override
protected FilterResults performFiltering(CharSequence constraint) {
String filterString = constraint.toString().toLowerCase();
FilterResults results = new FilterResults();
final List<String> list = originalData;
int count = list.size();
final ArrayList<String> nlist = new ArrayList<String>(count);
String filterableString ;
for (int i = 0; i < count; i++) {
filterableString = list.get(i);
if (filterableString.toLowerCase().contains(filterString)) {
nlist.add(filterableString);
}
}
results.values = nlist;
results.count = nlist.size();
return results;
}
@SuppressWarnings("unchecked")
@Override
protected void publishResults(CharSequence constraint, FilterResults results) {
filteredData = (ArrayList<String>) results.values;
notifyDataSetChanged();
}
}
}