私は助けが必要です。フラグメント内のListViewを使用して検索
検索バーの機能について問題があります。 検索コードを入力する前に。私のListandSearch.javaはうまくいきます。それは私がやりたかったやり方です。
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;
}
}
それから私は、このコードを挿入します。
/************************************************************************************/
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
}
});
/*****************************************************************/
これまでのコードが機能しています。それは検索することができます。
問題:(。私は「完全な」という言葉バーを検索し、それがArtGalleryFragmentに行くことがBarFragmentに行く代わりにそれを選択する例#1)
(例#2私は "baを検索します。 "あなたはそれとして、int position
を使用することはできませんそれが表示
あなたは何をお勧めしますか? – Problematic
マウスをクリックするのではなく、 'listView'の選択変更でlistenを使うことができます。どの要素が選択されたかがわかります。 –
'listItem'の' selectedItem'や 'selectedIndex'も' onItemClick'で取得する可能性がありますが、タイミングの問題にぶつかるかどうかはわかりません。 –