Ich brauche Hilfe.Suche mit ListView in einem Fragment
Ich habe Probleme mit der Funktion meiner Suchleiste. Bevor Sie den Suchcode eingeben. Meine ListandSearch.java funktioniert gut. Es ist die Art und Weise, wie ich es machen wollte.
ListandSearch.java:
public class ListandSearch extends Fragment{
// Search EditText
EditText inputSearch;
ArrayAdapter<String> listViewAdapter;
ListView listview;
String[] esttype = {
"Art Gallery", //1
"ATM", //2
"Bakery", //3
"Bank", //4
"Bar", //5
};
public ListandSearch(){
}
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.activity_list_fragment, container, false);
listview = (ListView) view.findViewById(R.id.thislist);
inputSearch = (EditText) view.findViewById(R.id.inputSearch);
listViewAdapter = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_list_item_1 , esttype);
listview.setAdapter(listViewAdapter);
listview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
android.app.FragmentManager fragmentManager = getFragmentManager();
switch (position) {
case 0:
fragmentManager.beginTransaction().replace(R.id.content_frame, new ArtGalleryFragment()).commit();
break;
case 1:
fragmentManager.beginTransaction().replace(R.id.content_frame, new AtmFragment()).commit();
break;
case 2:
fragmentManager.beginTransaction().replace(R.id.content_frame, new BakeryFragment()).commit();
break;
case 3:
fragmentManager.beginTransaction().replace(R.id.content_frame, new BankFragment()).commit();
break;
case 4:
fragmentManager.beginTransaction().replace(R.id.content_frame, new BarFragment()).commit();
break;
default:
break;
}
}});
return view;
}
}
Dann füge ich diesen Code:
/************************************************************************************/
inputSearch.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence cs, int arg1, int arg2, int arg3) {
// When user changed the Text
// getActivity().
listViewAdapter.getFilter().filter(cs);
}
@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
}
});
/*****************************************************************/
Bisher ist der Code funktioniert. Es kann suchen.
Das Problem: (Bsp. # 1 ich das "complete" Wort Bar suchen und es auswählen, anstatt es in den BarFragment gehen wird es das ArtGalleryFragment geht)
(Ex # 2 Als ich "ba suchen. "es angezeigt ist die Liste Bäckerei, Bank, Bar. wenn ich stattdessen Songbank- wenn es um die BankFragment geht geht es zum AtmFragment.
können Sie mir helfen?
Also, was können Sie empfehlen? – Problematic
Sie können hören auf die Auswahl der 'listView's statt Mausklick. Es wird Ihnen sagen, welches Element ausgewählt wurde. –
Möglicherweise erhalten Sie auch 'listView's' selectedItem' oder 'selectedIndex' in' onItemClick', aber ich bin mir nicht sicher, ob Sie auf Timing-Probleme stoßen werden. –