2017-05-04 20 views
0

我想表现出一个TextView如何获得火力数据库中的TextView

package com.example.u_ahm.firebase; 
enter code hereimport android.os.StrictMode; 
import android.support.annotation.NonNull; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.ArrayAdapter; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.ListView; 
import android.widget.TextView; 
import android.widget.Toast; 

import com.google.android.gms.tasks.OnCompleteListener; 
import com.google.android.gms.tasks.Task; 
import com.google.firebase.database.ChildEventListener; 
import com.google.firebase.database.DataSnapshot; 
import com.google.firebase.database.DatabaseError; 
import com.google.firebase.database.DatabaseReference; 
import com.google.firebase.database.FirebaseDatabase; 
import com.google.firebase.database.GenericTypeIndicator; 
import com.google.firebase.database.ValueEventListener; 

import java.util.ArrayList; 
import java.util.HashMap; 
import java.util.Map; 

public class MainActivity extends AppCompatActivity { 

    private DatabaseReference mDatabase; 
    EditText etID, etName, etAddress, etSeats, etNumber; 
    Button addbtn,delbtn ,upbtn , showbtn; 
    TextView txt; 
    int id = 1; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     mDatabase = FirebaseDatabase.getInstance().getReference().child("College"); 

     init(); 

    } 

    private void init() { 

     etID = (EditText) findViewById(R.id.idText); 
     etName = (EditText) findViewById(R.id.nameText); 
     etAddress = (EditText) findViewById(R.id.addText); 
     etSeats = (EditText) findViewById(R.id.seatsText); 
     etNumber = (EditText) findViewById(R.id.numText); 


     addbtn = (Button) findViewById(R.id.insertBtn); 
     delbtn = (Button) findViewById(R.id.delBtn); 
     upbtn = (Button) findViewById(R.id.updateBtn); 
     showbtn = (Button) findViewById(R.id.showBtn); 

     addbtn.setOnClickListener(dbButtonsListener); 
     delbtn.setOnClickListener(dbButtonsListener); 
     upbtn.setOnClickListener(dbButtonsListener); 
     showbtn.setOnClickListener(dbButtonsListener); 

     txt = (TextView) findViewById(R.id.textView2); 
    } 

    private View.OnClickListener dbButtonsListener = new View.OnClickListener() { 
     @Override 
     public void onClick(final View v) { 

      switch (v.getId()){ 
       case R.id.insertBtn: 

        String name = etName.getText().toString().trim(); 
        String address = etAddress.getText().toString().trim(); 
        String seats = etSeats.getText().toString().trim(); 
        String number = etNumber.getText().toString().trim(); 

        HashMap<String,String> map = new HashMap<String, String>(); 

        map.put("Name",name); 
        map.put("Address",address); 
        map.put("Seats",seats); 
        map.put("Numbers",number); 



        mDatabase.child(Integer.toString(id)).setValue(map).addOnCompleteListener(new OnCompleteListener<Void>() { 
         @Override 
         public void onComplete(@NonNull Task<Void> task) { 
          if(task.isComplete()){ 
           Toast.makeText(MainActivity.this,"Data inserted",Toast.LENGTH_SHORT).show(); 
           id++; 
          } 
         } 
        }); 

        break; 
       case R.id.delBtn: 

        break; 
       case R.id.updateBtn: 

        break; 
       case R.id.showBtn: 

        mDatabase.addValueEventListener(new ValueEventListener() { 
         @Override 
         public void onDataChange(DataSnapshot dataSnapshot) { 

          for(DataSnapshot snapshot : dataSnapshot.getChildren()){ 

           College college = snapshot.getValue(College.class); 

           String string = txt.getText() + "\nName: " + college.getName()+ "\n Address : " + college.getAddress() + 
             "\n No. of Seats: " + college.getSeats() + "\n Numbers: " + college.getNumbers(); 
           txt.setText(string); 

          } 


         } 

         @Override 
         public void onCancelled(DatabaseError databaseError) { 

         } 
        }); 



        break; 
      } 

     } 
    }; 
} 

我的数据,这是我的数据库

College 
1 
Address: 
"Gulshan e Iqbal" 
Name: 
"Ideal" 
Numbers: 
"560" 
Seats: 
"150" 
2 
Address: 
"Gulshan e Iqbal" 
Name: 
"Ideal" 
Numbers: 
"560" 
Seats: 
"150" 
3 
Address: 
"Gulshan e Iqbal" 
Name: 
"Ideal" 
Numbers: 
"560" 
Seats: 
"150" 

目前我收到此错误 com.google.firebase .database.DatabaseException:在反序列化时期望映射,但得到一个类java.util.ArrayList

+0

请参阅https://firebase.google.com/docs/database/android/read-and-write – AlwaysConfused

+0

请添加数据库的结构。 –

回答

0

如果在此行中出现此错误College college = snapshot.getValue(College.class);,或许您的模型有问题。你可以分享你的logcat吗?