我是android studio的新手,在我的代码中遇到了一个错误,我试图在我的firebase数据库中显示一些项目的列表视图。然而,它在我的getvalue函数中显示为null。请帮帮忙。
主要活动
public class MainActivity extends AppCompatActivity {
DatabaseReference database;
List<Users> usersList;
ListView lister;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
lister = (ListView) findViewById(R.id.loglist);
database = FirebaseDatabase.getInstance().getReference("Activity Log");
usersList = new ArrayList<>();
}
@Override
protected void onStart() {
super.onStart();
database.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
usersList.clear();
for (DataSnapshot usersnapshot : dataSnapshot.getChildren()) {
Users users = dataSnapshot.getValue(Users.class);
usersList.add(users);
}
LogDetails adapter = new
LogDetails(MainActivity.this,usersList);
lister.setAdapter(adapter);
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
}
LogDetails类
public class LogDetails extends ArrayAdapter<Users> {
private Activity context;
private List<Users> usersList;
public LogDetails (Activity context,List<Users> usersList){
super(context,R.layout.listview,usersList );
this.context=context;
this.usersList=usersList;
}
@NonNull
@Override
public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
LayoutInflater inflater = context.getLayoutInflater();
View viewer = inflater.inflate(R.layout.listview,null,true);
TextView text = (TextView) viewer.findViewById(R.id.text);
Users users = usersList.get(position);
text.setText(users.getUsername()+" unlocked the door at "+users.getUnlocktime());
return viewer;
}
}
Users类
public class Users {
String locktime;
String unlocktime;
String username;
public Users(){
}
public Users(String locktime,String unlocktime,String username){
this.locktime=locktime;
this.unlocktime=unlocktime;
this.username=username;
}
public String getLocktime() {
return locktime;
}
public String getUnlocktime() {
return unlocktime;
}
public String getUsername() {
return username;
}
}
我的数据库有一个名为ActivityLog的根,它有三个子节点,每个子节点有三个节点。任何帮助都会收到
发布于 2018-06-01 07:12:48
Firebase需要公共setter来填充对象的属性。将setter添加到您的POJO:
public class User {
private String locktime;
private String unlocktime;
private String username;
public String getLocktime() {
return locktime;
}
public void setLocktime(String locktime) {
this.locktime = locktime;
}
public String getUnlocktime() {
return unlocktime;
}
public void setUnlocktime(String unlocktime) {
this.unlocktime = unlocktime;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
}
https://stackoverflow.com/questions/50633944
复制相似问题