搜索栏在RecyclerView中不可见

问题描述 投票:0回答:1

我正在Fragment的Recycler视图中使用搜索栏,但似乎不是请帮我。请帮我。请帮我。请帮我。请帮我。请帮我。请帮我。请帮我。请帮我。请帮我。请帮我。请帮我。请帮我。请帮我。请帮我。请帮我。请帮我。请帮我。请帮我。请帮我。请帮我。请帮我。请帮我。请帮我。请帮我。请帮我。请帮我。请帮我。请帮我。请帮我。请帮我。请帮我。请帮我。请帮助我。

menu.xml

<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    tools:context=".HomeActivity">

    <item
        android:id="@+id/action_search"
        android:icon="@android:drawable/ic_menu_search"
        android:title="@string/search"
        app:actionViewClass="androidx.appcompat.widget.SearchView"
        app:showAsAction="always" />

</menu>

这是片段中的Java代码,与片段一起使用

fragment.java

package part.time.job.v2;


import android.app.SearchManager;
import android.content.Context;
import android.os.Bundle;

import androidx.annotation.NonNull;
import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;

import android.os.Parcelable;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.SearchView;
import android.widget.TextView;

import com.google.android.gms.tasks.OnFailureListener;
import com.google.android.gms.tasks.OnSuccessListener;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseUser;
import com.google.firebase.firestore.CollectionReference;
import com.google.firebase.firestore.FirebaseFirestore;
import com.google.firebase.firestore.QueryDocumentSnapshot;
import com.google.firebase.firestore.QuerySnapshot;

import java.util.ArrayList;
import java.util.List;

import model.Jobpost;
import ui.JournalRecyclerAdapter;
import ui.JournalRecyclerAdapterEmp;
import util.JournalApi;


/**
 * A simple {@link Fragment} subclass.
 */

    public class ListjobFragment extends Fragment {

        private FirebaseUser user;
        private FirebaseAuth firebaseAuth;
        private FirebaseAuth.AuthStateListener authStateListener;
        private FirebaseFirestore db = FirebaseFirestore.getInstance();
        private List<Jobpost> journalList;
        private RecyclerView recyclerView;
        private Parcelable savedRecyclerLayoutState;
        private JournalRecyclerAdapterEmp journalRecyclerAdapterEmp;

        private CollectionReference collectionReference=db.collection("Employer");
        private TextView noJournalEntry;
        private SearchView searchView = null;
        private SearchView.OnQueryTextListener queryTextListener;

        public ListjobFragment() {
            // Required empty public constructor
        }




        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                                 Bundle savedInstanceState) {
              super.onCreate(savedInstanceState);

            // Inflate the layout for this fragment
            View view=inflater.inflate(R.layout.fragment_listjob, container, false);

            firebaseAuth= FirebaseAuth.getInstance();
            user =firebaseAuth.getCurrentUser();

            noJournalEntry= view.findViewById(R.id.no_list);
            journalList=new ArrayList<>();

            recyclerView=view.findViewById(R.id.recyclerView);
           recyclerView.setHasFixedSize(true);
            recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
            return view;
        }




        @Override
        public void onStart() {
            super.onStart();
    //        user= firebaseAuth.getCurrentUser();
    //        firebaseAuth.addAuthStateListener(authStateListener);
            if (journalList!=null){
                journalList.clear();
            }

            collectionReference.document(JournalApi.getInstance().getUserId()).collection("Job Post").whereEqualTo("userId",JournalApi.getInstance().getUserId())
                    .get()
                    .addOnSuccessListener(new OnSuccessListener<QuerySnapshot>() {
                        @Override
                        public void onSuccess(QuerySnapshot queryDocumentSnapshots) {
                            if (!queryDocumentSnapshots.isEmpty()){
                                for (QueryDocumentSnapshot journals: queryDocumentSnapshots){
    //                                Journal journal=journals.toObject(Journal.class);
                                    Jobpost jobpost=journals.toObject(Jobpost.class);
                                    journalList.add(jobpost);

                                }

                                journalRecyclerAdapterEmp = new JournalRecyclerAdapterEmp(getActivity(),journalList);
                                recyclerView.setAdapter(journalRecyclerAdapterEmp);
                                journalRecyclerAdapterEmp.notifyDataSetChanged();

                            }else {

                                noJournalEntry.setVisibility(View.VISIBLE);

                            }
                        }
                    })
                    .addOnFailureListener(new OnFailureListener() {
                        @Override
                        public void onFailure(@NonNull Exception e) {

                        }
                    });

        }

        @Override
        public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
            inflater.inflate(R.menu.menu, menu);
            MenuItem searchItem = menu.findItem(R.id.action_search);
            SearchManager searchManager = (SearchManager) getActivity().getSystemService(Context.SEARCH_SERVICE);

            if (searchItem != null) {
                searchView = (SearchView) searchItem.getActionView();
            }
            if (searchView != null) {
                searchView.setSearchableInfo(searchManager.getSearchableInfo(getActivity().getComponentName()));

                queryTextListener = new SearchView.OnQueryTextListener() {
                    @Override
                    public boolean onQueryTextChange(String newText) {
                        Log.i("onQueryTextChange", newText);

                        return true;
                    }
                    @Override
                    public boolean onQueryTextSubmit(String query) {
                        Log.i("onQueryTextSubmit", query);

                        return true;
                    }
                };
                searchView.setOnQueryTextListener(queryTextListener);
            }
            super.onCreateOptionsMenu(menu, inflater);
        }

        @Override
        public boolean onOptionsItemSelected(MenuItem item) {
            switch (item.getItemId()) {
                case R.id.action_search:
                    // Not implemented here
                    return false;
                default:
                    break;
            }
            searchView.setOnQueryTextListener(queryTextListener);
            return super.onOptionsItemSelected(item);
        }



    }
android android-recyclerview menu searchview searchbar
1个回答
0
投票

将其放入代码中,您将获得searchBar:

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

基本上是片段,要显示菜单项,我们必须使用“ setHasOptionsMenu”。

© www.soinside.com 2019 - 2024. All rights reserved.