【问题标题】:RecyclerView + searchViewRecyclerView + searchView
【发布时间】:2016-02-20 16:34:10
【问题描述】:

我的应用程序中的搜索选项有问题。我正在使用recyclerView,一切正常……除了searchView。在搜索字段中输入查询不会改变 ListView 中的任何内容。也许你能帮助我?我的适配器中有方法替换,如下所示:

 public void replace(List<Concert> concerts) {
        if (concerts != null) {
            concertList = concerts;
            notifyDataSetChanged();
        }

    }

那么我的片段类看起来像这样:

public class SearchFragment extends Fragment {


SearchView mSearchView;
RecyclerView mSearchRecyclerView;
Activity mActivity;
SearchAsyncTask mSearchAsyncTask;
Concert concert;
List<Concert> searchedList = new ArrayList<>();
ConcertAdapter adapter;

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

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    View v = inflater.inflate(R.layout.fragment_search_layout, container, false);
    mSearchView = (SearchView) v.findViewById(R.id.search_view);
    mSearchView.setQueryHint("Kogo chcesz posłuchać?");
    mSearchRecyclerView = (RecyclerView) v.findViewById(R.id.search_concerts_rv);
    adapter = new ConcertAdapter(getActivity().getApplicationContext(), new ArrayList<Concert>(), (MainActivity) mActivity);
    mSearchRecyclerView.setAdapter(adapter);
    mSearchRecyclerView.setLayoutManager(new LinearLayoutManager(getActivity().getApplicationContext()));
    mSearchAsyncTask = new SearchAsyncTask(SearchFragment.this);
    futureConcerts();

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

        @Override
        public boolean onQueryTextChange(String s) {
            Log.d("Search", "SearchOnQueryTextSubmit: " + s);
            search(s);
            return true;

        }
    });

    return v;
}
public void futureConcerts() {
    mSearchAsyncTask.execute();
    getActivity().getWindow().getDecorView().getRootView().setClickable(false);
}
public void notifyAboutListCreation(List<Concert> res) {
    adapter.replace(res);

}
private boolean search(String search) {
    List<Concert> subList = new ArrayList<>();
    for (Concert concert : searchedList) {
        if (concert.getTitle().toLowerCase().contains(search.toLowerCase())) {
            subList.add(concert);
            Log.d("added", concert.getTitle());
        }

        adapter.replace(subList);
    }

    return true;
}

}

你可以写任何你想要的东西,但 listView 保持不变:/知道为什么它不起作用吗?

【问题讨论】:

    标签: android search android-recyclerview


    【解决方案1】:

    因为 searchedList 是空的。您正在空列表中查找音乐会。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-03-17
      • 1970-01-01
      • 2015-04-26
      • 2018-10-08
      • 2016-10-29
      • 2018-10-19
      • 2020-02-07
      • 1970-01-01
      相关资源
      最近更新 更多