Android 从Firebase检索单一类型的对象
我对Firebase有个小问题。我有一个表示用户信息的对象和其他表示入口和出口的对象。问题是我只想提取存储在Firebase上的用户对象。有什么办法吗 多谢各位 这是我的JsonAndroid 从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"
{
"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);
}
}