Ich habe ein ListView
. Jede Zeile enthält 3 TextView
's und 2 Button
' s. Darüber habe ich eine EditText
. Wie kann ich meine ListView
durch den Wert in dem ersten TextView
jede Zeile filtern?Suchen im Listview mit EditText
Antwort
eine Array-Liste für die Listenansicht ..Und auf "AddTextChangeListener" erstellen Sie nach ähnlichen suchen Elemente in der Liste und laden Sie eine neue Arraylist für th e gesuchter Text ...
edittext.addTextChangedListener(new TextWatcher(){
public void afterTextChanged(Editable s) {
//search for the keyword and add the items to a new arraylist
}
Der folgende Code verwendet einen benutzerdefinierten Listenadapter.
Ich habe 3 Textansichten angezeigt eine benutzerdefinierte Liste-Adapter. Ich habe ein Beispiel erstellt, das basierend auf der Eingabe in editext am Anfang der Liste sucht. Auf der Grundlage der Eingabe wird ein Vergleich mit den Daten in Textview1 jeder Zeile durchgeführt, und die Daten werden entsprechend gefiltert und angezeigt.
können Sie haben andere Elemente in Listview Zeile und die Suche kann auf texview1/textview2 oder textview3 basieren. Ändern Sie das Folgende nach Ihren Bedürfnissen.
public class MainActivity extends Activity {
ArrayList<NewData> mTemp=new ArrayList<NewData>();
ArrayList<NewData> mPostingData=new ArrayList<NewData>();
ArrayList< NewData> mOri = new ArrayList<NewData>();
Myadapter ma;
EditText search;
NewData nd;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
for(int i = 0; i < 20; i++)
{
nd=new NewData();
nd.newDatacus.put(NewData.TAG_CUSTOMER_CODE, "i"+i);
nd.newDatacus.put(NewData.TAG_CUSTOMER_NAME, "a"+i);
nd.newDatacus.put(NewData.TAG_CUSTOMER_MOBILE, "number");
nd.newDatacus.put(NewData.TAG_CUSTOMER_ADDRESS, "address");
mOri.add(nd);
}
ma= new Myadapter(MainActivity.this);
mPostingData=mOri;
mTemp=mOri;
ListView lv= (ListView) findViewById(R.id.list);
lv.setAdapter(ma);
search= (EditText) findViewById(R.id.search);
search.addTextChangedListener(new TextWatcher() {
public void onTextChanged(CharSequence s, int start, int before, int count) {
ma.getFilter().filter(s);
ma.notifyDataSetChanged();
}
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
}
public void afterTextChanged(Editable s) {
}
});
}
class Myadapter extends ArrayAdapter
{
LayoutInflater mInflater;
public void setData(ArrayList<NewData> mPpst) {
mPostingData = mPpst;//contains class items data.
}
@Override
public Filter getFilter() {
return new Filter() {
@Override
protected void publishResults(CharSequence constraint, FilterResults results) {
if (results != null && results.count >= 0) {
setData((ArrayList<NewData>) results.values);//if results of search is null set the searched results data
} else {
setData(mOri);// set original values
}
notifyDataSetInvalidated();
}
@Override
protected FilterResults performFiltering(CharSequence constraint) {
FilterResults result = new FilterResults();
if (!TextUtils.isEmpty(constraint)) {
constraint = constraint.toString().toLowerCase();
ArrayList<NewData> foundItems = new ArrayList<NewData>();
if(mTemp!=null)
{
for(int i=0;i<mTemp.size();i++)
{
if (mTemp.get(i).newDatacus.get(NewData.TAG_CUSTOMER_CODE).toString().contains(constraint)) {
System.out.println("My datas"+mTemp.get(i).newDatacus.get(NewData.TAG_CUSTOMER_CODE).toString());
foundItems.add(mTemp.get(i));
}
else
{
}
}
}
result.count = foundItems.size();//search results found return count
result.values = foundItems;// return values
}
else
{
result.count=-1;// no search results found
}
return result;
}
};
}
public Myadapter(Context context) {
super(context, 0);
mInflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
// TODO Auto-generated constructor stub
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return mPostingData.size();
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return position;
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
ViewHolder holder;
if(mOri == null){
return null;
}
// 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, null);
convertView.setLayoutParams(new AbsListView.LayoutParams(LayoutParams.FILL_PARENT,
LayoutParams.WRAP_CONTENT));
// Creates a ViewHolder and store references to the two children views
// we want to bind data to.
holder = new ViewHolder();
holder.t1=(TextView) convertView.findViewById(R.id.textView1);
holder.t2 = (TextView) convertView.findViewById(R.id.textView2);
holder.t3 = (TextView) convertView.findViewById(R.id.textView3);
convertView.setTag(holder);
} else {
// Get the ViewHolder back to get fast access to the TextView
// and the ImageView.
holder = (ViewHolder) convertView.getTag();
}
holder.t1.setText(mPostingData.get(position).newDatacus.get(NewData.TAG_CUSTOMER_CODE).toString());
holder.t2.setText(mPostingData.get(position).newDatacus.get(NewData.TAG_CUSTOMER_NAME).toString());
holder.t3.setText(mPostingData.get(position).newDatacus.get(NewData.TAG_CUSTOMER_MOBILE).toString());
return convertView;
}
}
class ViewHolder
{
TextView t1,t2,t3;
}
main.xml
<?xml version="1.0" encoding="utf-8"?>
<EditText
android:id="@+id/search"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
<ListView
android:id="@+id/list"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
list.xml // xml aufzublasen
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingLeft="20dp"
android:text="TextView" />
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingLeft="20dp"
android:text="TextView" />
<TextView
android:id="@+id/textView3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingLeft="20dp"
android:text="TextView" />
NewData Klasse
public class NewData {
public static final String TAG_CUSTOMER_CODE = "customer_code";
public static final String TAG_CUSTOMER_NAME = "customer_name";
public static final String TAG_CUSTOMER_MOBILE = "customer_mobile";
public static final String TAG_CUSTOMER_ADDRESS = "customer_address";
Hashtable newDatacus=new Hashtable();
public NewData()
{
newDatacus.put(NewData.TAG_CUSTOMER_CODE,new String());
newDatacus.put(NewData.TAG_CUSTOMER_ADDRESS,new String());
newDatacus.put(NewData.TAG_CUSTOMER_NAME,new String());
newDatacus.put(NewData.TAG_CUSTOMER_MOBILE,new String());
newDatacus.put(NewData.TAG_CUSTOMER_ADDRESS,new String());
}
}
zu versuchen und ändern entsprechend – Raghunandan
- 1. Suchfunktion mit editText - ListView
- 2. Listview mit EditText
- 3. Listview mit EditText und OnItemClickListener
- 4. Android ListView mit EditText Suche
- 5. Android: EditText in ListView
- 6. Android: EditText in ListView Ausgabe
- 7. EditText aktualisiert Elemente in ListView mit TextWatcher
- 8. EditText in ListView verloren Fokus
- 9. Android - ListView EditText Fokus Probleme
- 10. instant Suche Funktionalität zu listview mit Edittext in Xamarin android
- 11. Suchen editText Animation wie Chrome App
- 12. Expandable Listview mit Kontrollkästchen im Dialogfeld angezeigt
- 13. Iterate durch ListView und EditText-Feld Werte
- 14. Android: Nach leeren EditText Feldern suchen
- 15. So erhalten Sie Text in EditText mit ListView und Adapter
- 16. Warum geht das listVIEW hinter EditText?
- 17. EditText in ListView bleibt nicht fokussiert
- 18. Listview, blättern nach unten, seltsame Verhalten mit EditText anzeigen
- 19. Android Listview mit editText und Kontrollkästchen für jedes Element
- 20. Android-Problem mit Fehlertext im EditText-Feld
- 21. EditText-Wert im Dialog wird nicht gespeichert
- 22. EditText - Tastatur erscheint nicht im Fokus
- 23. Listview und benutzerdefinierte Datenprovider suchen yii2
- 24. EditText mit WebServices verbinden
- 25. EditText ohne Linie im Grunde
- 26. Dokument im Dateisystem suchen
- 27. Einfügen mit asp: ListView im asp: FormView
- 28. Wie mit ganzen Wort im iPhone suchen?
- 29. ElasticSearch - Suchen mit Bindestrichen im Namen
- 30. Wie onresume in Listview checkbox und edittext value
http://samir-mangroliya.blogspot.in/2012/05/android-sectioned-listview-with-search_6865.html –
Check this: [Android -Suche Listenansicht] (http://stackoverflow.com/a/5180156/379693) –
change „serach“ für eine bessere Bezugnahme auf „Suche“ den obigen Code – Tschegewara