Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android FirebaseRecyclerAdapter在SearchView OnQuerySubmit()之后未更新其值_Android_Firebase_Android Recyclerview_Google Cloud Firestore - Fatal编程技术网

Android FirebaseRecyclerAdapter在SearchView OnQuerySubmit()之后未更新其值

Android FirebaseRecyclerAdapter在SearchView OnQuerySubmit()之后未更新其值,android,firebase,android-recyclerview,google-cloud-firestore,Android,Firebase,Android Recyclerview,Google Cloud Firestore,我一直在尝试从SeacrchViewonquerytexsubmit()更新FirestoreRecyclerAdapter。它显示了按下submit后一个空白的Recycler适配器,但显然在加载片段时起作用。请先看一下代码 适配器 public class SpeciesDatabaseAdapter extends FirestoreRecyclerAdapter<SpeciesDatabase, SpeciesDatabaseAdapter.SpeciesDatabaseHolde

我一直在尝试从
SeacrchView
onquerytexsubmit()
更新FirestoreRecyclerAdapter。它显示了按下submit后一个空白的Recycler适配器,但显然在加载片段时起作用。请先看一下代码

适配器

public class SpeciesDatabaseAdapter extends FirestoreRecyclerAdapter<SpeciesDatabase, SpeciesDatabaseAdapter.SpeciesDatabaseHolder> {


    public SpeciesDatabaseAdapter(@NonNull FirestoreRecyclerOptions<SpeciesDatabase> options) {
        super(options);
    }

    @Override
    protected void onBindViewHolder(@NonNull SpeciesDatabaseHolder holder, int position, @NonNull SpeciesDatabase model) {

        Picasso.get()
                .load(model.getImageone())
                .placeholder(R.drawable.smile_monk)
                .fit()
                .centerCrop()
                .into(holder.imageView);
        holder.commonName.setText(model.getCommonName());
        holder.scientificName.setText(model.getScientificName());
    }

    @NonNull
    @Override
    public SpeciesDatabaseHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.admin_species_item,
                parent, false);
        return new SpeciesDatabaseHolder(v);
    }


    public class SpeciesDatabaseHolder extends RecyclerView.ViewHolder {
        ImageView imageView;
        TextView commonName;
        TextView scientificName;
        public SpeciesDatabaseHolder(@NonNull View itemView) {
            super(itemView);
            imageView = itemView.findViewById(R.id.imageSpecies);
            commonName = itemView.findViewById(R.id.textCommonName);
            scientificName = itemView.findViewById(R.id.textScientificName);
        }
    }
}


公共类SpeciesDatabaseAdapter扩展FirestoreRecyclerAdapter{
public SpeciesDatabaseAdapter(@NonNull FirestoreRecyclerOptions选项){
超级(期权);
}
@凌驾
受保护的无效onBindViewHolder(@NonNull SpeciesDatabaseHolder,int位置,@NonNull SpeciesDatabase模型){
毕加索
.load(model.getImageone())
.占位符(R.drawable.smile\u monk)
.fit()
.centerCrop()
.插入(支架.图像视图);
holder.commonName.setText(model.getCommonName());
holder.scientificName.setText(model.getScientificName());
}
@非空
@凌驾
public SpeciesDatabaseHolder onCreateViewHolder(@NonNull ViewGroup父级,int-viewType){
视图v=LayoutInflater.from(parent.getContext()).flate(R.layout.admin\u项目,
父母,假);
返回新的规格数据库持有者(v);
}
公共类SpeciesDatabaseHolder扩展了RecyclerView.ViewHolder{
图像视图图像视图;
文本视图公共名称;
TextView科学名称;
public SpeciesDatabaseHolder(@NonNull View itemView){
超级(项目视图);
imageView=itemView.findViewById(R.id.imageSpecies);
commonName=itemView.findViewById(R.id.textCommonName);
scientificName=itemView.findViewById(R.id.textScientificName);
}
}
}
碎片活动

public class AdminSpeciesDatabaseFragment extends Fragment {
    AdminUtility adminUtility = new AdminUtility();
    private FirebaseFirestore db = FirebaseFirestore.getInstance();
    private CollectionReference speciesRef = db.collection("species");

    private SpeciesDatabaseAdapter adapter;

    FloatingActionButton actionButton;

    //EditText search;


    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.admin_species, container, false);
        init(view);
        setUpRecyclerView(view, "");

        setHasOptionsMenu(true);
        return view;
    }

    private void setUpRecyclerView(View view, String data) {

        if (data.equals("")) {
            Query query = speciesRef.orderBy("id", Query.Direction.DESCENDING);

            FirestoreRecyclerOptions<SpeciesDatabase> options = new FirestoreRecyclerOptions.Builder<SpeciesDatabase>()
                    .setQuery(query, SpeciesDatabase.class)
                    .build();

            adapter = new SpeciesDatabaseAdapter(options);

            GridLayoutManager gridLayoutManager = new GridLayoutManager(getContext(), 2, GridLayoutManager.VERTICAL, false);
            RecyclerView recyclerView = view.findViewById(R.id.recycler_view_adminspecies);
            recyclerView.setLayoutManager(gridLayoutManager);
            recyclerView.setAdapter(adapter);
        }
        else {
            Toast.makeText(getContext(), "Search: "+data, Toast.LENGTH_SHORT).show();
            Query query = speciesRef.whereEqualTo("commonName", data);//.orderBy("id",Query.Direction.DESCENDING);

            FirestoreRecyclerOptions<SpeciesDatabase> options = new FirestoreRecyclerOptions.Builder<SpeciesDatabase>()
                    .setQuery(query, SpeciesDatabase.class)
                    .build();

            adapter = new SpeciesDatabaseAdapter(options);

            //adapter.updateOptions(options);
            GridLayoutManager gridLayoutManager = new GridLayoutManager(getContext(), 2, GridLayoutManager.VERTICAL, false);
            RecyclerView recyclerView = view.findViewById(R.id.recycler_view_adminspecies);
            recyclerView.setLayoutManager(gridLayoutManager);
            //adapter.startListening();
            recyclerView.setAdapter(adapter);
        }

    }

    private void init(View view) {

        //searchText = view.findViewById(R.id.editText);
        actionButton = view.findViewById(R.id.buttonAddPost);
        actionButton.setOnClickListener(v -> startActivity(new Intent(getContext(), AddFeedActivity.class)));
    }

    @Override
    public void onCreateOptionsMenu(@NonNull Menu menu, @NonNull MenuInflater inflater) {
        inflater.inflate(R.menu.search_menu, menu);
        MenuItem searchItem = menu.findItem(R.id.action_search);
        View mView = this.getView();
        SearchView searchView = (SearchView) searchItem.getActionView();

        searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
            @Override
            public boolean onQueryTextSubmit(String query) {
                Toast.makeText(getContext(), "Submitted"+query, Toast.LENGTH_SHORT).show();
                setUpRecyclerView(mView, query);
                return false;
            }

            @Override
            public boolean onQueryTextChange(String newText) {
                //Toast.makeText(getContext(), "Text Change", Toast.LENGTH_SHORT).show();
                return false;
            }
        });
    }

    @Override
    public boolean onOptionsItemSelected(@NonNull MenuItem item) {

        switch (item.getItemId()) {
            case R.id.menu_admin_user:
                startActivity(new Intent(getContext(), MainActivity.class));
                getActivity().finish();
                break;
            case R.id.menu_admin_sign_out:
                adminUtility.signOutGoogle(getContext());
                getActivity().finish();
                break;

            case R.id.refresh:
                setUpRecyclerView(getView(), "");
                break;
        }
        return super.onOptionsItemSelected(item);
    }

    @Override
    public void onStart() {
        super.onStart();
        adapter.startListening();
    }

    @Override
    public void onStop() {
        super.onStop();
        adapter.stopListening();
    }
}

公共类AdminSpeciesDatabaseFragment扩展片段{
AdminUtility AdminUtility=新的AdminUtility();
私有FirebaseFirestore db=FirebaseFirestore.getInstance();
私人收藏参考物种参考=数据库收藏(“物种”);
私有规范数据库适配器;
浮动动作按钮动作按钮;
//编辑文本搜索;
@可空
@凌驾
创建视图时的公共视图(@NonNull LayoutInflater inflater、@Nullable ViewGroup container、@Nullable Bundle savedInstanceState){
视图=充气机。充气(R.layout.admin_物种,容器,错误);
初始(视图);
setUpRecyclerView(视图“”);
设置选项菜单(真);
返回视图;
}
私有void setUpRecyclerView(视图、字符串数据){
if(数据等于(“”){
Query Query=speciesRef.orderBy(“id”,Query.Direction.DESCENDING);
FirestoreRecyclerOptions选项=新建FirestoreRecyclerOptions.Builder()
.setQuery(查询,SpeciesDatabase.class)
.build();
适配器=新规格数据库适配器(选项);
GridLayoutManager GridLayoutManager=新的GridLayoutManager(getContext(),2,GridLayoutManager.VERTICAL,false);
RecyclerView RecyclerView=view.findViewById(R.id.recycler\u view\u adminspecies);
setLayoutManager(gridLayoutManager);
recyclerView.setAdapter(适配器);
}
否则{
Toast.makeText(getContext(),“Search:+数据,Toast.LENGTH_SHORT).show();
Query Query=speciesRef.whereEqualTo(“commonName”,data);//.orderBy(“id”,Query.Direction.DESCENDING);
FirestoreRecyclerOptions选项=新建FirestoreRecyclerOptions.Builder()
.setQuery(查询,SpeciesDatabase.class)
.build();
适配器=新规格数据库适配器(选项);
//adapter.updateOptions(选项);
GridLayoutManager GridLayoutManager=新的GridLayoutManager(getContext(),2,GridLayoutManager.VERTICAL,false);
RecyclerView RecyclerView=view.findViewById(R.id.recycler\u view\u adminspecies);
setLayoutManager(gridLayoutManager);
//adapter.startListening();
recyclerView.setAdapter(适配器);
}
}
私有void init(视图){
//searchText=view.findviewbyd(R.id.editText);
actionButton=view.findViewById(R.id.buttonAddPost);
setOnClickListener(v->startActivity(新的意图(getContext(),AddFeedActivity.class));
}
@凌驾
public void onCreateOptions菜单(@NonNull菜单,@NonNull菜单充气机){
充气机。充气(右菜单。搜索菜单,菜单);
MenuItem searchItem=menu.findItem(R.id.action\u search);
View mView=this.getView();
SearchView SearchView=(SearchView)searchItem.getActionView();
searchView.setOnQueryTextListener(新的searchView.OnQueryTextListener(){
@凌驾
公共布尔值onQueryTextSubmit(字符串查询){
Toast.makeText(getContext(),“Submitted”+查询,Toast.LENGTH\u SHORT.show();
setUpRecyclerView(mView,查询);
返回false;
}
@凌驾
公共布尔onQueryTextChange(字符串newText){
//Toast.makeText(getContext(),“文本更改”,Toast.LENGTH_SHORT.show();
返回false;
}
});
}
@凌驾
公共布尔值OnOptionItemSelected(@NonNull MenuItem item){
开关(item.getItemId()){
案例R.id.菜单\管理\用户:
startActivity(新意图(getContext(),MainActivity.class));
getActivity().finish();
打破
案例R.id.菜单\管理\注销:
signOutGoogle(getContext());
getActivity().finish();
打破
案例R.id.refresh:
setUpRecyclerView(getView(),“”);
打破
}