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 搜索栏不工作_Android_Firebase_Firebase Realtime Database - Fatal编程技术网

Android 搜索栏不工作

Android 搜索栏不工作,android,firebase,firebase-realtime-database,Android,Firebase,Firebase Realtime Database,我在实时数据库的教师集合中存储了一些值。 然而,当我尝试使用我的搜索栏时,我的应用程序崩溃了 SETU方法 private void setAdapter(final String searchedstring) { databaseReference.child("teacher").addListenerForSingleValueEvent(new ValueEventListener() { @Override public void onDa

我在实时数据库的教师集合中存储了一些值。 然而,当我尝试使用我的搜索栏时,我的应用程序崩溃了

SETU方法

 private void setAdapter(final String searchedstring) {

    databaseReference.child("teacher").addListenerForSingleValueEvent(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {

            fullnamelist.clear();
            recyclerView.removeAllViews();
            int counter=0;

            for (DataSnapshot snapshot:dataSnapshot.getChildren()){
                String uid =snapshot.getKey();
                String full_name=snapshot.child("name").getValue(String.class);

                if(full_name.toLowerCase().contains(searchedstring)){
                    fullnamelist.add(full_name);
                    counter++;
                }

                if(counter==10)
                    break;
            }

            searchAdapter = new searchadapter(getActivity(),fullnamelist);
            recyclerView.setAdapter(searchAdapter);

        }
searchadapter.java

public class searchadapter extends RecyclerView.Adapter<searchadapter.SearchViewHolder> {


Context context;

ArrayList<String> fullnamelist;

class SearchViewHolder extends RecyclerView.ViewHolder{

    TextView full_name;

    public SearchViewHolder(@NonNull View itemView) {
        super(itemView);

        full_name=(TextView)itemView.findViewById(R.id.full_name);
    }
}

public searchadapter(Context context, ArrayList<String> fullnamelist) {
    this.context = context;
    this.fullnamelist = fullnamelist;
}

@NonNull
@Override
public searchadapter.SearchViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
   View view = LayoutInflater.from(context).inflate(R.layout.search_list, parent ,false);
    return new searchadapter.SearchViewHolder(view);
}

@Override
public void onBindViewHolder(@NonNull SearchViewHolder holder, int position) {

    holder.full_name.setText(fullnamelist.get(position));
}



@Override
public int getItemCount() {
    return fullnamelist.size();
}
更改此选项:

String full_name = snapshot.child("name").getValue(String.class);
为此:

String full_name = snapshot.child("full_name").getValue(String.class);

根据您的数据库,您有一个名为
full\u name
的子属性,因此您需要将数据库中的确切名称作为方法
child()
中的参数。您使用的键(“name”)无效,这会导致
full\u name
变为null,因此出现null指针异常

试试这个

String full_name=snapshot.child("full_name").getValue(String.class);

full_name
为空,我已向其添加了值,请查看使用无效密钥的图像的链接。请查看我的答案。是的,现在它不会崩溃,但搜索栏不工作。您应该为此问题发布一个新问题,并附上相关代码,如方法代码
setAdapter
String full_name = snapshot.child("full_name").getValue(String.class);
String full_name=snapshot.child("full_name").getValue(String.class);