I need a quick solution for my problem. I have a ListView, and I want to search from that. Im a kind a starter with the filtering and the adapters, so this is my Fragment's code:
View v;
DB mydb;
ListView listView;
final ArrayList<String> thelist = new ArrayList<>();
final ArrayList<String> deletelist= new ArrayList<>();
boolean torles=false;
String delete; int id;
private ListAdapter listadapter;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
v = inflater.inflate(R.layout.fragment_numberone, container, false);
listView = (ListView) v.findViewById(R.id.list);
mydb = new DB(getActivity());
loadlist();
EditText filter = (EditText)v.findViewById(R.id.filter);
filter.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) {
getActivity().listadapter.getFilter().filter(s);
//Here is the problem
}
@Override
public void afterTextChanged(Editable s) {
}
});
listView.setOnItemClickListener(
new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
id = Integer.parseInt(deletelist.get(i));
delete=thelist.get(i);
AlertDialog.Builder alert = new AlertDialog.Builder(getActivity());
alert.setTitle("Title");
alert.setMessage("Message");
alert.setPositiveButton("Delete", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
mydb.grade_delete(id);
listView.removeAllViewsInLayout();
thelist.removeAll(thelist);
deletelist.removeAll(deletelist);
loadlist();
}
});
alert.setNegativeButton("No", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
});
alert.create().show();
}
}
);
return v;
}
public void loadlist() {
Cursor data = mydb.Jegynevlekerdezes();
if (data.getCount() == 0) {
} else {
while (data.moveToNext()) {
thelist.add(data.getString(0)+": "+data.getString(1));
deletelist.add(data.getString(2));
listadapter = new ArrayAdapter<>(getActivity(), android.R.layout.simple_list_item_1, android.R.id.text1, thelist);
listView.setAdapter(listadapter);
}
}
}
}
My problem is with this: getActivity().listadapter.getFilter().filter(s); The listadapter is wrong, it's show as red. Like I sad, I'm new with the adapter and the searching.
listadapter
. That's why it's not compiling. From your code, it seems to me that you need to use{YourFragmentClassName}.this. listadapter
in this place. That's how you access parent this out of anonymous in Java – Peregreenlistadapter.getFilter().filter(s);
Hope that helps! – i_A_mokgetFilter
out of ArrayAdapter (developer.android.com/reference/android/widget/ArrayAdapter), but you have some ListAdapter type. What is this type? I think you probably need to change the type of yourlistadapter
to ArrayAdapter – Peregreen