Android 从Firebase检索单一类型的对象

Android 从Firebase检索单一类型的对象,android,firebase,firebase-realtime-database,Android,Firebase,Firebase Realtime Database,我对Firebase有个小问题。我有一个表示用户信息的对象和其他表示入口和出口的对象。问题是我只想提取存储在Firebase上的用户对象。有什么办法吗 多谢各位 这是我的Json { "Entradas-123456789E": { "Entradas : 13-2-2017": { "DetallesMon Mar 13 12:03:17 GMT+01:00 2017": { "user": { "dni": "123456789E"

我对Firebase有个小问题。我有一个表示用户信息的对象和其他表示入口和出口的对象。问题是我只想提取存储在Firebase上的用户对象。有什么办法吗

多谢各位

这是我的Json

{
  "Entradas-123456789E": {
    "Entradas : 13-2-2017": {
      "DetallesMon Mar 13 12:03:17 GMT+01:00 2017": {
        "user": {
          "dni": "123456789E"
        }
      }
    }
  },
  "Salidas-123456789E": {
    "Salidas : 13-2-2017": {
      "DetallesMon Mar 13 20:06:46 GMT+01:00 2017": {
        "user": {
          "dni": "123456789E"
        }
      }
    }
  },
  "Usuario_123456789E": {
    "dni": "123456789E",
    "lastname": "Prueba Prueba2",
    "name": "Mireia",
    "password: "######"
  },
  "Usuario_536881138E": {
    "dni": "53688138E",
    "lastname": "Mheb",
    "name": "Antonia",
    "password:"######"
  }
}
这是代码

public class MainActivityFragment extends Fragment {

private Intent takePictureIntent;
FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference myRef;
private String pathFotoTemporal;
private static final int REQUEST_TAKE_PHOTO = 1;
private View view;
private String key;

//Expandable list Adapter
ExpandableListAdapter listAdapter;
ExpandableListView expListView;
List<String> listDataHeader;
HashMap<String, List<String>> listDataChild;

//Users
private List <User> items = new ArrayList<>();

//Obejeto a pasar
User user = new User();
String password;


//Buttons
private EditText TextPass;
private EditText TextDNI;
private Button fichar;

// Adding child data
List<String> top250 = new ArrayList<String>();


@Override
public View onCreateView(LayoutInflater inflater, final ViewGroup container,
                         Bundle savedInstanceState) {
    view = inflater.inflate(R.layout.fragment_main, container, false);
    LeerFirebase();

    //Button
    TextPass = (EditText) view.findViewById(R.id.IdpasswordUser);
    //TextDNI = (EditText) view.findViewById(R.id.DNI);

    // get the listview
    expListView = (ExpandableListView) view.findViewById(R.id.lvExp);

    // preparing list data
    prepareListData();

    listAdapter = new ExpandableListAdapter(getActivity(), listDataHeader, listDataChild);
    //expListView.setAdapter(listAdapter);

    // setting list adapter
    expListView.setAdapter(listAdapter);

    //Write in database mesage myRef.setValue("Hello, World!");

    //Call Button fichar
    fichar = (Button) view.findViewById(R.id.fichar);
    fichar.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            key = TextDNI.getText().toString();
            password = TextPass.getText().toString();

            //SuperUser
            if(key.equalsIgnoreCase("********")&&password.equalsIgnoreCase("*******")){
                ((MainActivity) getActivity()).EditarUsuario();
                fichar.setVisibility(view.INVISIBLE);
                TextPass.setVisibility(view.INVISIBLE);
                TextDNI.setVisibility(view.INVISIBLE);
            }else{
                LeerFirebase();
            }

            //Para pasar de fragment hay que comprobar el dni y el password
            /*((MainActivity) getActivity()).AbrirFichar();
            fichar.setVisibility(view.INVISIBLE);
            TextPass.setVisibility(view.INVISIBLE);*/

        }
    });
    return view;
}

private void LeerFirebase() {
    myRef = database.getReference("Usuario" +"_"+ key+"/password");
    //+"/password"
    // Read from the database
    myRef.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            String value = dataSnapshot.getValue(String.class);
            password = TextPass.getText().toString();
            if(password.equalsIgnoreCase(value)){
                //Pasamos por pantalla
                Toast.makeText(getActivity(),"El usuario introducido es correcto",Toast.LENGTH_SHORT).show();
                //Pasamos al otro Fragment
                ((MainActivity) getActivity()).AbrirFichar(TextDNI.getText().toString());
                fichar.setVisibility(view.INVISIBLE);
                TextPass.setVisibility(view.INVISIBLE);
                TextDNI.setVisibility(view.INVISIBLE);
            }else {
                Toast.makeText(getActivity(),"El usuario introducido o la Contraseña no son correctos ",Toast.LENGTH_SHORT).show();
            }
        }

        @Override
        public void onCancelled(DatabaseError error) {
            Toast.makeText(getActivity(),"Hay un error de lectura ",Toast.LENGTH_SHORT).show();
        }
    });
}

//On start button is Visible
@Override
public void onStart() {
    final Button fichar = (Button) getView().findViewById(R.id.fichar);
    EditText getpassword = (EditText) getView().findViewById(R.id.IdpasswordUser);
    fichar.setVisibility(getView().VISIBLE);
    getpassword.setVisibility(getView().VISIBLE);
    super.onStart();
}


//List Adapter
private void prepareListData() {
    listDataHeader = new ArrayList<String>();
    listDataChild = new HashMap<String, List<String>>();

    // Adding child data
    listDataHeader.add("User Name");

    //Firebase carga

    DatabaseReference ListaRef = database.getReference();

    // Read from the database
    ListaRef.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            // This method is called once with the initial value and again
            // whenever data at this location is updated.

            items.clear();
            User usuarios;

            for( DataSnapshot i : dataSnapshot.getChildren()) {
                usuarios = i.getValue(User.class);
                items.add(usuarios);
                top250.add(" " + usuarios.getName() + " " + usuarios.getLastname());
            }
            Toast.makeText(getContext(), "Se han bajado " + items.size() + " Usuario", Toast.LENGTH_SHORT).show();
        }

        @Override
        public void onCancelled(DatabaseError error) {
            Toast.makeText(getContext(), "Error descargando las recetas", Toast.LENGTH_SHORT).show();
        }
    });
        List<String> top = new ArrayList<String>();

    //Falta corregir no saca nada
        for(int i = 0 ; i < top250.size(); i++){
            if (top250.get(i).isEmpty()||top250.equals(null)||top250.get(i).equals(null)||top250.get(i).equalsIgnoreCase("null null")){
                System.out.println("Noooo");
        }else{
            top.add(top250.get(i));
        }
    }
        listDataChild.put(listDataHeader.get(0), top); // Header, Child data
}
}
public class MainActivityFragment extends Fragment {

    FirebaseDatabase database = FirebaseDatabase.getInstance();
    DatabaseReference myRef;
    private View view;
    private String key;

    //Expandable list Adapter
    ExpandableListAdapter listAdapter;
    ExpandableListView expListView;
    List<String> listDataHeader;
    HashMap<String, List<String>> listDataChild;

    //Users
    private List <User> items = new ArrayList<>();

    //Obejeto a pasar
    User user = new User();
    String password;


    //Botones
    private EditText TextPass;
    private EditText TextDNI;
    private Button fichar;

    // Adding child data
    List<String> top250 = new ArrayList<String>();


    @Override
    public View onCreateView(LayoutInflater inflater, final ViewGroup container,
                             Bundle savedInstanceState) {
        view = inflater.inflate(R.layout.fragment_main, container, false);
        LeerFirebase();

        //Botones
        TextPass = (EditText) view.findViewById(R.id.IdpasswordUser);

        // get the listview
        expListView = (ExpandableListView) view.findViewById(R.id.lvExp);

        // preparing list data
        prepareListData();

        listAdapter = new ExpandableListAdapter(getActivity(), listDataHeader, listDataChild);

        // setting list adapter
        expListView.setAdapter(listAdapter);

        //Llamamos al boton fichar
        fichar = (Button) view.findViewById(R.id.fichar);
        fichar.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                key = TextDNI.getText().toString();
                password = TextPass.getText().toString();
                //SuperUsuario
                if(key.equalsIgnoreCase("######")&&password.equalsIgnoreCase("#########")){
                    ((MainActivity) getActivity()).EditarUsuario();
                    fichar.setVisibility(view.INVISIBLE);
                    TextPass.setVisibility(view.INVISIBLE);
                    TextDNI.setVisibility(view.INVISIBLE);
                }else{
                    LeerFirebase();
                }

            }
        });
        return view;
    }

    private void LeerFirebase() {
        myRef = database.getReference("Usuario" +"_"+ key+"/password");
        // Read from the database
        myRef.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                String value = dataSnapshot.getValue(String.class);
                password = TextPass.getText().toString();
                if(password.equalsIgnoreCase(value)){
                    //Pasamos por pantalla
                    Toast.makeText(getActivity(),"El usuario introducido es correcto",Toast.LENGTH_SHORT).show();
                    //Pasamos al otro Fragment
                    ((MainActivity) getActivity()).AbrirFichar(TextDNI.getText().toString());
                    fichar.setVisibility(view.INVISIBLE);
                    TextPass.setVisibility(view.INVISIBLE);
                    TextDNI.setVisibility(view.INVISIBLE);
                }else {
                    Toast.makeText(getActivity(),"El usuario introducido o la Contraseña no son correctos ",Toast.LENGTH_SHORT).show();
                }
            }

            @Override
            public void onCancelled(DatabaseError error) {
                Toast.makeText(getActivity(),"Hay un error de lectura ",Toast.LENGTH_SHORT).show();
            }
        });
    }

    //Al iniciarse crea el boton Visible
    @Override
    public void onStart() {
        final Button fichar = (Button) getView().findViewById(R.id.fichar);
        EditText getpassword = (EditText) getView().findViewById(R.id.IdpasswordUser);
        fichar.setVisibility(getView().VISIBLE);
        getpassword.setVisibility(getView().VISIBLE);
        super.onStart();
    }


    //List Adapter
    private void prepareListData() {
        listDataHeader = new ArrayList<String>();
        listDataChild = new HashMap<String, List<String>>();

        // Adding child data
        listDataHeader.add("User Name");

        //Firebase carga

        DatabaseReference ListaRef = database.getReference("Users");

        // Read from the database
        ListaRef.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                items.clear();
                User usuarios;

                for( DataSnapshot i : dataSnapshot.getChildren()) {
                    usuarios = i.getValue(User.class);
                    items.add(usuarios);
                    top250.add(" " + usuarios.getName() + " " + usuarios.getLastname());
                }
                Toast.makeText(getContext(), "Se han bajado " + items.size() + " Usuario", Toast.LENGTH_SHORT).show();
            }

            @Override
            public void onCancelled(DatabaseError error) {
                Toast.makeText(getContext(), "Error descargando las recetas", Toast.LENGTH_SHORT).show();
            }
        });

        listDataChild.put(listDataHeader.get(0), top250);
    }
}
public类MainActivityFragment扩展了片段{
私人意图;
FirebaseDatabase=FirebaseDatabase.getInstance();
数据库参考myRef;
私有字符串pathFotoTemporal;
私人静态最终int请求\u拍摄\u照片=1;
私人视野;
私钥;
//可扩展列表适配器
可扩展列表适配器;
ExpandableListView解释视图;
列表列表数据头;
HashMapListDataChild;
//使用者
私有列表项=新的ArrayList();
//奥贝耶托帕萨尔酒店
用户=新用户();
字符串密码;
//钮扣
私人编辑文本传递;
私有编辑文本文本DNI;
专用按钮fichar;
//添加子数据
List top250=新的ArrayList();
@凌驾
创建视图上的公共视图(布局、充气机、最终视图组容器、,
Bundle savedInstanceState){
视图=充气机。充气(R.layout.fragment_main,容器,假);
LeerFirebase();
//钮扣
TextPass=(EditText)view.findViewById(R.id.IdpasswordUser);
//TextDNI=(EditText)view.findViewById(R.id.DNI);
//获取列表视图
expListView=(ExpandableListView)view.findViewById(R.id.lvExp);
//准备列表数据
prepareListData();
listAdapter=新的ExpandableListAdapter(getActivity(),listDataHeader,listDataChild);
//expListView.setAdapter(listAdapter);
//设置列表适配器
expListView.setAdapter(listAdapter);
//在数据库mesage myRef.setValue中写入(“你好,世界!”);
//呼叫按钮菲卡
fichar=(按钮)view.findViewById(R.id.fichar);
fichar.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
key=TextDNI.getText().toString();
password=TextPass.getText().toString();
//超级用户
if(key.equalsIgnoreCase(“*******”)&&password.equalsIgnoreCase(“*******”){
((MainActivity)getActivity()).EditarUsuario();
fichar.setVisibility(视图不可见);
TextPass.setVisibility(view.INVISIBLE);
TextDNI.setVisibility(view.INVISIBLE);
}否则{
LeerFirebase();
}
//密码和密码
/*((MainActivity)getActivity()).AbrirFichar();
fichar.setVisibility(视图不可见);
TextPass.setVisibility(view.INVISIBLE)*/
}
});
返回视图;
}
私有void LeerFirebase(){
myRef=database.getReference(“Usuario”+““+key+”/password”);
//+“/密码”
//从数据库中读取
myRef.addValueEventListener(新的ValueEventListener(){
@凌驾
公共void onDataChange(DataSnapshot DataSnapshot){
String value=dataSnapshot.getValue(String.class);
password=TextPass.getText().toString();
if(密码.相等信号案例(值)){
//帕萨莫斯波潘塔拉酒店
Toast.makeText(getActivity(),“El usuario Introducto es correcto”,Toast.LENGTH_SHORT).show();
//帕萨莫斯奥特罗片段
((MainActivity)getActivity()).AbrirFichar(TextDNI.getText().toString());
fichar.setVisibility(视图不可见);
TextPass.setVisibility(view.INVISIBLE);
TextDNI.setVisibility(view.INVISIBLE);
}否则{
Toast.makeText(getActivity(),“El-usuario Introduction o la Contraseña no son correctoros”,Toast.LENGTH_SHORT).show();
}
}
@凌驾
已取消的公共无效(DatabaseError错误){
Toast.makeText(getActivity(),“Hay un error de catecha”,Toast.LENGTH_SHORT.show();
}
});
}
//启动按钮可见
@凌驾
public void onStart(){
final Button fichar=(Button)getView().findviewbyd(R.id.fichar);
EditText getpassword=(EditText)getView().findViewById(R.id.IdpasswordUser);
setVisibility(getView().VISIBLE);
setPassword.setVisibility(getView().VISIBLE);
super.onStart();
}
//列表适配器
私有void prepareListData(){
listDataHeader=新的ArrayList();
listDataChild=newHashMap();
//添加子数据
添加(“用户名”);
//火基卡加
DatabaseReference ListaRef=database.getReference();
//从数据库中读取
addValueEventListener(新的ValueEventListener(){
@凌驾
公共void onDataChange(DataSnapshot DataSnapshot){
//使用初始值调用此方法一次,然后再次调用
//每当更新此位置的数据时。
items.clear();
用户惯用权;
对于(DataSnapshot i:DataSnapshot.getChildren()){
usuarios=i.getValue(User.class);
添加项目(通常);
添加(“+usuarios.getName()+”+usuarios.getLastname());
}
Toast.makeText(getContext(),“Se han bajado”+items.size()+“Usuario”,Toast.LENGTH_SHORT).show();
}
@凌驾
已取消的公共无效(DatabaseError错误){
Toast.makeText(getContext(),“Error descargando las recetas”,Toast.LENGTH_SHORT.show();
}
});
列表顶部=新的ArrayList();
//法尔塔·科雷吉尔·萨卡·纳达
对于(int i=0;ipublic class MainActivityFragment extends Fragment {

    FirebaseDatabase database = FirebaseDatabase.getInstance();
    DatabaseReference myRef;
    private View view;
    private String key;

    //Expandable list Adapter
    ExpandableListAdapter listAdapter;
    ExpandableListView expListView;
    List<String> listDataHeader;
    HashMap<String, List<String>> listDataChild;

    //Users
    private List <User> items = new ArrayList<>();

    //Obejeto a pasar
    User user = new User();
    String password;


    //Botones
    private EditText TextPass;
    private EditText TextDNI;
    private Button fichar;

    // Adding child data
    List<String> top250 = new ArrayList<String>();


    @Override
    public View onCreateView(LayoutInflater inflater, final ViewGroup container,
                             Bundle savedInstanceState) {
        view = inflater.inflate(R.layout.fragment_main, container, false);
        LeerFirebase();

        //Botones
        TextPass = (EditText) view.findViewById(R.id.IdpasswordUser);

        // get the listview
        expListView = (ExpandableListView) view.findViewById(R.id.lvExp);

        // preparing list data
        prepareListData();

        listAdapter = new ExpandableListAdapter(getActivity(), listDataHeader, listDataChild);

        // setting list adapter
        expListView.setAdapter(listAdapter);

        //Llamamos al boton fichar
        fichar = (Button) view.findViewById(R.id.fichar);
        fichar.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                key = TextDNI.getText().toString();
                password = TextPass.getText().toString();
                //SuperUsuario
                if(key.equalsIgnoreCase("######")&&password.equalsIgnoreCase("#########")){
                    ((MainActivity) getActivity()).EditarUsuario();
                    fichar.setVisibility(view.INVISIBLE);
                    TextPass.setVisibility(view.INVISIBLE);
                    TextDNI.setVisibility(view.INVISIBLE);
                }else{
                    LeerFirebase();
                }

            }
        });
        return view;
    }

    private void LeerFirebase() {
        myRef = database.getReference("Usuario" +"_"+ key+"/password");
        // Read from the database
        myRef.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                String value = dataSnapshot.getValue(String.class);
                password = TextPass.getText().toString();
                if(password.equalsIgnoreCase(value)){
                    //Pasamos por pantalla
                    Toast.makeText(getActivity(),"El usuario introducido es correcto",Toast.LENGTH_SHORT).show();
                    //Pasamos al otro Fragment
                    ((MainActivity) getActivity()).AbrirFichar(TextDNI.getText().toString());
                    fichar.setVisibility(view.INVISIBLE);
                    TextPass.setVisibility(view.INVISIBLE);
                    TextDNI.setVisibility(view.INVISIBLE);
                }else {
                    Toast.makeText(getActivity(),"El usuario introducido o la Contraseña no son correctos ",Toast.LENGTH_SHORT).show();
                }
            }

            @Override
            public void onCancelled(DatabaseError error) {
                Toast.makeText(getActivity(),"Hay un error de lectura ",Toast.LENGTH_SHORT).show();
            }
        });
    }

    //Al iniciarse crea el boton Visible
    @Override
    public void onStart() {
        final Button fichar = (Button) getView().findViewById(R.id.fichar);
        EditText getpassword = (EditText) getView().findViewById(R.id.IdpasswordUser);
        fichar.setVisibility(getView().VISIBLE);
        getpassword.setVisibility(getView().VISIBLE);
        super.onStart();
    }


    //List Adapter
    private void prepareListData() {
        listDataHeader = new ArrayList<String>();
        listDataChild = new HashMap<String, List<String>>();

        // Adding child data
        listDataHeader.add("User Name");

        //Firebase carga

        DatabaseReference ListaRef = database.getReference("Users");

        // Read from the database
        ListaRef.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                items.clear();
                User usuarios;

                for( DataSnapshot i : dataSnapshot.getChildren()) {
                    usuarios = i.getValue(User.class);
                    items.add(usuarios);
                    top250.add(" " + usuarios.getName() + " " + usuarios.getLastname());
                }
                Toast.makeText(getContext(), "Se han bajado " + items.size() + " Usuario", Toast.LENGTH_SHORT).show();
            }

            @Override
            public void onCancelled(DatabaseError error) {
                Toast.makeText(getContext(), "Error descargando las recetas", Toast.LENGTH_SHORT).show();
            }
        });

        listDataChild.put(listDataHeader.get(0), top250);
    }
}