Nig*_*Owl 5 android firebase searchview firebase-realtime-database
我正在调用OnChildAddedSearchTextView OnQueryListener 中的方法,该OnChildAdded方法使用方法在对话框中搜索和显示记录。但是当我运行代码时,该OnChildAdded方法似乎两次调用内部代码作为对话框提示两次,日志语句也相同。
下面是该方法的代码:
searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) {
mSearchQuery = query.trim();
mDatabaseReference.orderByChild("name").startAt(mSearchQuery).addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
student = dataSnapshot.getValue(Student.class);
FragmentManager fragmentManager = getActivity().getSupportFragmentManager();
EnrollOperationFragment enrollOperationFragment = EnrollOperationFragment.newInstance(student.getName(),student.getId());
enrollOperationFragment.show(fragmentManager,ENROLL_OPERATION);}
Run Code Online (Sandbox Code Playgroud)
onChildAdded将为与您的查询匹配的每个子节点调用。但还要注意,每次用户提交搜索文本时,您都会添加一个新的子侦听器。因此,如果他们提交两次,您就有两个侦听器,并且onChildAdded每个孩子都会被调用两次(每个侦听器一次)。然后,当他们再次提交搜索时,它将添加第三个侦听器。等等。
解决方案是在附加新侦听器之前先分离前一个侦听器。请参阅分离侦听器的文档。或者使用她的代码来获取灵感:How stop Listening to firebase location in android
| 归档时间: |
|
| 查看次数: |
2319 次 |
| 最近记录: |