2016-05-06 4 views
-1

Ich benutze die Toast innerhalb der Filterklasse. Hier ist der Code für sieAndroid: Die Methode makeText (Kontext, CharSequence, int) im Typ Toast ist nicht anwendbar für die Argumente (ListViewAdapter, String, int)

public void filter(String charText) { 
     charText = charText.toLowerCase(Locale.getDefault()); 
     expressionlist.clear(); 
     if (charText.length() == 0) { 
      expressionlist.addAll(arraylist); 
     } else { 
      for (Expression wp : arraylist) { 
       if (wp.getWord().toLowerCase(Locale.getDefault()) 
         .contains(charText)) { 
        expressionlist.add(wp); 
       } 
      } 
      if(expressionlist.size() == 0){ 
       Toast toast = Toast.makeText(this, "No match found", Toast.LENGTH_LONG); 
       toast.setGravity(Gravity.BOTTOM | Gravity.CENTER_HORIZONTAL, 0, 0); 
       toast.show(); 
        // add all items of expressionlist 
       expressionlist.addAll(arraylist); 
       } 

     } 

     notifyDataSetChanged(); 
    } 
} 

I Störung erhalten Die Methode makeText(Context, CharSequence, int) in der Art Toast ist nicht anwendbar für die Argumente (ListViewAdapter, String, int) Wie kann ich dieses Problem lösen?

+1

Pass Kontext sein Klasse an Adapter und diesen Kontext anstelle dieses Schlüsselwort zu verwenden. – Amy

+0

Einfach weil ein ListViewAdaper keine Unterklasse von Context ist. Sie müssen den Kontext Ihrer Anwendung abrufen, der die aktuelle Aktivität ist (um es einfach zu halten) – AxelH

+1

Sie könnten dies gelöst haben, indem Sie Ihr Gehirn verwenden. – Vucko

Antwort

2

Sie sollten Kontext verweisen z. B. getApplicationContext() oder den Kontext des ListViewAdapter übergeben.

Kontext kann ein Activity oder Fragment

Toast toast = Toast.makeText(context, "No match found", Toast.LENGTH_LONG); 
+0

Es hat funktioniert. Vielen Dank! Du bist der echte Hengst: D !! –

Verwandte Themen