Да ... к сожалению, имена параметров в методе onItemClick, который вы должны реализовать, не являются настолько информативными, но вот пример с именами того, чем они являются:
autoCompleteTextView.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView> parent, View view, int position, long rowId) {
String selection = (String)parent.getItemAtPosition(position);
//TODO Do something with the selected text
}
});
Для получения дополнительной информации см .: http://developer.android.com/reference/android/widget/AdapterView.OnItemClickListener.html
Я бы назвал их картой и фильтром . Уменьшение имеет для меня немного другое значение, а преобразование слишком расплывчато. Что касается имени класса, фильтры могут быть не лучшими, но у меня нет лучшей рекомендации.
Я знаю, что вы не просили об этом конкретно, но некоторые сигнатуры в общих методах можно улучшить:
static public <T> List<T> filter(List<T> source, Predicate<? super T> filter);
static public <Y,T> List<Y> transform(List<T> source, Mutator<Y,? super T> filter);
static public <T> boolean exists(List<T> source, Predicate<? super T> filter);
static public <T> T findFirst(List<T> source, Predicate<? super T> filter);
static public <T> boolean trueForAll(List<T> source, Predicate<? super T> filter);
в аналогичной библиотеке, которую я использовал:
aSpecification.isSatisfiedBy (anObject);
Это выглядит очень красиво; Я думаю, вы здесь определенно на правильном пути. Да, я думаю, что Mutator - хорошее имя; transform лучше, потому что его чаще читают как глагол, а map имеет коннотацию «существительное», что может сбивать с толку; и единственная основная функция на основе наборов, которая, как я мог подумать, может вам понадобиться, - это функция переупорядочения.
Это не совсем то, что вы спрашивали, но это в духе вашего вопроса. На мой взгляд, лучше сказать:
List<String> shortWords = filtered(allWords, short);
, чем
List<String> shortWords = filter(allWords, short);
, я бы предпочел преобразование и фильтр .
Казалось бы, Transform должен быть Mutate (или, альтернативно, Mutator должен быть Transformer) для единообразия. Это кажется довольно ясным относительно намерения:
static <Y,T> public List<Y> mutate (List<T> originalForm, Mutator<Y,T> mutator);
Также немного более подробным (но более последовательным и стандартным) является спецификация:
static public boolean isTrueForAll(List<T> source, Predicate<T> filter);
или
static public boolean assertTrueForAll(List<T> source, Predicate<T> filter);
Существуют ли какие-либо важные основанные на наборах функции, которые я забыл включить в класс библиотеки?
Для функций сбора данных высшего порядка я использую подход, описанный Адрианом Куном в его статье « Pimp My Foreach ».
Некоторые из них у вас уже есть, но думал, что все равно выброшу их туда: