Tworzę aplikację typu eBook dla Androida i chcę odfiltrować tytuł książki, ale za każdym razem, gdy umieścisz słowo lub zdanie w edittext, przeszuka zawartość książek ... Czy ktoś może mi pomóc z tym ...Jak filtrować listę przez EditText
Odpowiedz
Musisz napisać textChangedlistener (lub) TextWatcher dla edittext. Wewnątrz słuchacza musisz napisać logikę wyszukiwania. Oto APIdoc. Oto przykład na textwatcher.
Widziałem już cały ten temat, ale nie ten, którego szukałem .. jeśli wiesz, możesz wysłać mi działający program więc widzę, czy jest to możliwe .. dzięki – Mordiggian
próbować ten jeden, kiedy u wpisać tekst w EditText lista pokaże przefiltrowaną wynik jak wykazały rzeczy w obrazach
początkowa:
filtrowane :
to main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<EditText
android:id="@+id/etSearchbox"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
<ListView
android:id="@+id/lvFirst"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
></ListView>
</LinearLayout>
to FilterListActivity.java
package com.filterlist;
import android.app.Activity;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.ListView;
public class FilterListActivity extends Activity{
EditText etSearchbox;
ListView lvFirst;
ArrayAdapter<String> adapter1;
String[] data = {"mehul joisar","amit mishra","amitabh","Aamir khan","jesica","katrina"};
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
etSearchbox=(EditText)findViewById(R.id.etSearchbox);
lvFirst=(ListView)findViewById(R.id.lvFirst);
lvFirst.setTextFilterEnabled(true);
adapter1 = new ArrayAdapter<String>(FilterListActivity.this, android.R.layout.simple_list_item_1, data);
lvFirst.setAdapter(adapter1);
etSearchbox.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {
// TODO Auto-generated method stub
FilterListActivity.this.adapter1.getFilter().filter(arg0);
}
@Override
public void beforeTextChanged(CharSequence arg0, int arg1, int arg2,
int arg3) {
// TODO Auto-generated method stub
}
@Override
public void afterTextChanged(Editable arg0) {
// TODO Auto-generated method stub
}
});
}
}
To jest świetne! Ale chcę to zrobić nieco inaczej. Mam adapter dla listy 10 najlepszych cly (jest to lista statyczna). Teraz, gdy użytkownik wpisze w polu edittext, chcę filtr z innej listy miast, które mam. Jak mogę to osiągnąć? – Namratha
ok. Czy wiesz, gdzie chcesz wyświetlić filtrowany wynik po filtrowaniu z innej listy miast? –
mam pracy przykład, spróbuj tego:
filterEditText = (EditText)findViewById(R.id.filter);
filterEditText.addTextChangedListener(filterTextWatcher);
TextWatcher filterTextWatcher = new TextWatcher() {
public void beforeTextChanged(CharSequence s, int start, int count,int after) {
}
public void onTextChanged(CharSequence s, int start, int before,int count) {
adapter.getFilter().filter(s);
}
@Override
public void afterTextChanged(Editable s) {
// TODO Auto-generated method stub
}
};
Adapter musi implements Filterable
@Override
public Filter getFilter() {
// Filter filter = null;
if(filter == null)
filter = new CheeseFilter();
return filter;
}
I klasa filtra:
public class CheeseFilter extends Filter {
@Override
protected FilterResults performFiltering(CharSequence constraint) {
// TODO Auto-generated method stub
constraint = constraint.toString().toLowerCase();
FilterResults newFilterResults = new FilterResults();
if (constraint != null && constraint.length() > 0) {
ArrayList<String> auxData = new ArrayList<String>();
for (int i = 0; i < data.size(); i++) {
if (data.get(i).toLowerCase().contains(constraint))
auxData.add(data.get(i));
}
newFilterResults.count = auxData.size();
newFilterResults.values = auxData;
} else {
newFilterResults.count = data.size();
newFilterResults.values = data;
}
return newFilterResults;
}
@Override
protected void publishResults(CharSequence constraint, FilterResults results) {
ArrayList<String> resultData = new ArrayList<String>();
resultData = (ArrayList<String>) results.values;
EfficientAdapter adapter = new EfficientAdapter(context, resultData);
list.setAdapter(adapter);
// notifyDataSetChanged();
}
}
Można sprawdzić ten post o więcej informacji:
- 1. Jak filtrować listę używając angularjs
- 2. Django filtrować JSONField listę dicts
- 3. Jak filtrować listę w miejscu z Kotlin?
- 4. Jak filtrować listę żelazną w polimerze 1.0?
- 5. Jak filtrować przez ethernet adres MAC
- 6. Jak filtrować w `sqlalchemy` przez długość łańcucha?
- 7. Knockoutjs: Jak filtrować observableArray przez param
- 8. Jak filtrować tekst na liście Android ListView wspieranej przez SimpleCursorAdapter?
- 9. Jak filtrować listę na podstawie danych wprowadzonych przez użytkownika przy pomocy ClojureScript i Om?
- 10. Jak filtrować listę na podstawie innej listy zawierającej symbole wieloznaczne?
- 11. Jak filtrować listę w AngularJS za pomocą kilku linków
- 12. Jak mogę filtrować datatable?
- 13. Wyszukiwanie w ListView z EditText
- 14. Jak przechodzić przez niezmienną listę jak forEach?
- 15. Jak poprawnie filtrować tekst w ListView?
- 16. Jak filtrować według obcego id i lokalnego atrybutu przez belongs_to?
- 17. SQLAlchemy jak filtrować przez dzieci w wielu do wielu
- 18. LINQ wyrażenie filtrować listę kolekcji jednostki i utrzymywać wykaz podmiotów
- 19. Jak wykryć, czy edittext ma angielskie znaki?
- 20. Jak filtrować wybór wizualny?
- 21. Jak filtrować RXJS ArrayObservable
- 22. graphene-django - Jak filtrować?
- 23. vb.net jak przechodzić przez listę katalogów?
- 24. Jak uzyskać listę błędów zgłaszanych przez funkcję?
- 25. Jak zamówić listę jednostek przez zamówienie niestandardowe?
- 26. Jak mogę filtrować dane ListView podczas pisania w EditText w Androidzie
- 27. Android EditText: Jak utworzyć pusty akapit punktora przez BulletSpan?
- 28. Jak usunąć ostrość z EditText po zakończeniu edycji przez użytkownika?
- 29. ZAMÓW PRZEZ listę wartości IN
- 30. Jak filtrować zawód podczas pisania w MVC3
zobaczyć ten post http://stackoverflow.com/questions/1645209/ how-can-i-filter-listview-data-when-pisząc-na-edittext-in-android –
Utknąłem na tym przez jakiś czas, i znalazłem niektóre z odpowiedzi jawnie skomplikowane, więc ostatecznie wysłałem uproszczoną odpowiedź tutaj: http://stackoverflow.com/questions/ 17720481/how-could-i-filter-the-listview-using-baseadapter/36032382 # 36032382 –