簡體   English   中英

如何搜索和過濾片段中的文本

[英]How to search and filter for a text in a fragment

我能夠顯示搜索欄,但無法搜索任何內容,當我在搜索欄中鍵入任何內容並按Enter時,它不會過濾或顯示結果,一切都保持原樣,請告訴我這是怎么回事我的代碼,以及為什么沒有得到任何結果,在此先感謝。

public class MyJobsFragment extends Fragment {

    MyJobsAdapter adapter;
    RecyclerView recyclerView;


public MyJobsFragment() {

}

@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {

    setHasOptionsMenu(true);
    View view = inflater.inflate(R.layout.fragment_my_jobs, container, 
    false);

    ArrayList<MyJobsModel> data = new ArrayList<>();
    data.add(new MyJobsModel("Android Developer", "Vee Live", ""));
    data.add(new MyJobsModel("Android Developer", "Vee Live", ""));
    data.add(new MyJobsModel("Android Developer", "Vee Live", ""));
    data.add(new MyJobsModel("Android Developer", "Vee Live", ""));
    data.add(new MyJobsModel("Android Developer", "Vee Live", ""));
    data.add(new MyJobsModel("Android Developer", "Vee Live", ""));
    data.add(new MyJobsModel("Android Developer", "Vee Live", ""));

    recyclerView = (RecyclerView) view.findViewById(R.id.recyclerview);
    adapter = new MyJobsAdapter(data, getContext());
    recyclerView.setAdapter(adapter);
    recyclerView.setLayoutManager(new LinearLayoutManager(getContext()));

    RecyclerView.ItemAnimator itemAnimator = new DefaultItemAnimator();
    itemAnimator.setAddDuration(1000);
    itemAnimator.setRemoveDuration(1000);
    recyclerView.setItemAnimator(itemAnimator);

    return view;
}


@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);
}

@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
    inflater.inflate(R.menu.search_view, menu);
    MenuItem item = menu.findItem(R.id.menuSearch);
    final SearchView searchView = new SearchView(((Jobs) 
    getActivity()).getSupportActionBar().getThemedContext());
    MenuItemCompat.setShowAsAction(item, 
    MenuItemCompat.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW | 
    MenuItemCompat.SHOW_AS_ACTION_IF_ROOM);
    MenuItemCompat.setActionView(item, searchView);

    searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
        @Override
        public boolean onQueryTextSubmit(String query) {
            return false;
        }

        @Override
        public boolean onQueryTextChange(String newText) {
            return false;
        }
    });
}

}

您沒有在onQueryTextSubmit上過濾recyclerview的數據

提交文本后,您需要過濾ArrayList並刷新recyclerview的數據。

  searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
        @Override
        public boolean onQueryTextSubmit(String query) {
            ArrayList<MyJobsModel> filteredData = new ArrayList<MyJobsModel>();

            for (MyJobsModel myJobsModel : data) {
                if (myJobsModel.getName().equals(query)) {

                    filteredData.add(myJobsModel);

                }

            }

  adapter = new MyJobsAdapter(data, getContext());
                    recyclerView.setAdapter(adapter);
            return true ;


        }

        @Override
        public boolean onQueryTextChange(String newText) {
            return false;
        }
    });

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM