У моего приложения есть ящик, который содержит пользовательский просмотр списка. Каждый элемент списка имеет один значок и текстовое представление. Поэтому я хочу фильтровать элементы на основе текста в текстовом виде. Заранее спасибоКак фильтровать вид списка ящика?
0
A
ответ
0
я обеспечиваю здесь пример кода для фильтрации адаптер:
Вот list_item.xml
:
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/list_view"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:padding="10dp"
android:textSize="16sp" >
</TextView>
Вот SearchableAdapter.java
:
import java.util.ArrayList;
import java.util.List;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Filter;
import android.widget.Filterable;
import android.widget.TextView;
// The standard text view adapter only seems to search from the beginning of whole words
// so we've had to write this whole class to make it possible to search
// for parts of the arbitrary string we want
public class SearchableAdapter extends BaseAdapter implements Filterable {
private List<String>originalData = null;
private List<String>filteredData = null;
private LayoutInflater mInflater;
private ItemFilter mFilter = new ItemFilter();
public SearchableAdapter(Context context, List<String> data) {
this.filteredData = data ;
this.originalData = data ;
mInflater = LayoutInflater.from(context);
}
public int getCount() {
return filteredData.size();
}
public Object getItem(int position) {
return filteredData.get(position);
}
public long getItemId(int position) {
return position;
}
public View getView(int position, View convertView, ViewGroup parent) {
// A ViewHolder keeps references to children views to avoid unnecessary calls
// to findViewById() on each row.
ViewHolder holder;
// When convertView is not null, we can reuse it directly, there is no need
// to reinflate it. We only inflate a new View when the convertView supplied
// by ListView is null.
if (convertView == null) {
convertView = mInflater.inflate(R.layout.list_item, null);
// Creates a ViewHolder and store references to the two children views
// we want to bind data to.
holder = new ViewHolder();
holder.text = (TextView) convertView.findViewById(R.id.list_view);
// Bind the data efficiently with the holder.
convertView.setTag(holder);
} else {
// Get the ViewHolder back to get fast access to the TextView
// and the ImageView.
holder = (ViewHolder) convertView.getTag();
}
// If weren't re-ordering this you could rely on what you set last time
holder.text.setText(filteredData.get(position));
return convertView;
}
static class ViewHolder {
TextView text;
}
public Filter getFilter() {
return mFilter;
}
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();
}
}
}
Я представил эту демку от here.
За дополнительной информацией просьба ознакомиться с ней.
Thanks
+0
Спасибо друг другу. Действительно полезно. –
Смежные вопросы
- 1. фильтровать диапазон, используя хеш-вид списка
- 2. Как фильтровать содержимое списка?
- 3. Android - Пользовательские открытый вид ящика
- 4. Вид сверху над раздвижной рукояткой ящика
- 5. Как расширить вид из макета ящика?
- 6. Как фильтровать элементы из списка?
- 7. Как обновить вид списка
- 8. Как фильтровать аннотации на вид карты
- 9. Сохранить вид в навигации Изменение ящика
- 10. Доступный вид списка списка
- 11. Вид ящика для просмотра навигация xml-файл
- 12. Как изменить вид моего списка?
- 13. Как сделать вид списка clickable
- 14. Как настроить внешний вид почтового ящика для файла pdf
- 15. C# набор внешний вид почтового ящика, как mailitem.sender
- 16. Как обновить основной вид с меню ящика с помощью KYDrawerController
- 17. Как скрыть пользовательский вид панели действий при открытии ящика
- 18. Как фильтровать данные с помощью раскрывающегося списка
- 19. Как фильтровать ListBox с использованием списка флажок,
- 20. Как фильтровать элементы из списка в Python?
- 21. Как фильтровать результаты списка в Java
- 22. Как фильтровать список списка int с условием?
- 23. Как эффективно фильтровать данные из списка словарей
- 24. Как фильтровать строки из списка в Haskell
- 25. Как фильтровать нулевые значения из этого списка?
- 26. Как фильтровать None из списка [Option]?
- 27. Как фильтровать страницу с помощью выпадающего списка?
- 28. Как фильтровать с помощью выпадающего списка
- 29. Как я могу сделать такой вид списка в макете?
- 30. Фильтровать элементы списка для ввода
@AndiGeeky если у вас есть образец кода, не могли бы вы его опубликовать. Благодарю вас –
@ Ashish Kumawat: Пожалуйста, проверьте мой ответ ниже .. !! – AndiGeeky