Ich versuche, eine Suchleiste für eine ListView in einem Fragment für Android zu implementieren. Ich habe es in einer Aktivität arbeiten lassen, aber jetzt muss ich es in einem Fragment arbeiten lassen. Hier ist mein Code:Kontext für ArrayAdapter in Fragment-Klasse
public class AboFragment extends Fragment {
String [] items;
ArrayList<String> listItems;
ArrayAdapter<String> adapter;
ListView listView;
EditText editText;
public AboFragment() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.fragment_abo, container, false);
listView=(ListView)v.findViewById(R.id.listview);
editText=(EditText)v.findViewById(R.id.textsearch);
initList();
editText.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
if(s.toString().equals("")){
initList();
}
else{
searchItem(s.toString());
}
}
@Override
public void afterTextChanged(Editable s) {
}
});
Button dealerActivity = (Button) v.findViewById(R.id.button_dealer);
dealerActivity.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent startDealer = new Intent(getActivity(), DealerActivity.class);
startActivity(startDealer);
}
});
return v;
}
public void initList(){
items = new String[]{"Canada", "China", "Japan", "USA"};
listItems = new ArrayList<>(Arrays.asList(items));
adapter = new ArrayAdapter<String>(this, R.layout.list_item, R.id.textitem, listItems);
listView.setAdapter(adapter);
}
public void searchItem(String textToSearch){
for(String item:items){
if(!item.contains(textToSearch)){
listItems.remove(item);
}
}
adapter.notifyDataSetChanged();
}
}
Das Problem liegt in dem initList() -Methode, wo ich versuche, den Adapter für meine Arraylist zu initialisieren, aber ich bin nicht sicher, wie es zu beheben. Es akzeptiert "das" nicht. Ich habe auch "getContext" ohne Erfolg versucht. Fehlermeldung lautet "kann Konstruktor nicht auflösen". Wenn ich die App mit "getActivity" als Kontext starte, stürzt es nicht ab, aber die Suchleiste ist auch nicht da.
nein, nein, nein, das Filtern in Adaptern erfolgt durch den Aufruf von 'adapter.getFilter(). Filter (constraint)', es gibt Hunderte von Beispielen bei SO und im Web sowie – pskink
Wenn Sie fragen möchten über die fehlende Suchleiste, dann fragen Sie nach, nicht die nicht verwandten Fehler –