我定义了一个全局变量的List数组,用于储存用户的好友。但是我在加载好友数据的时候发现该数组根本没有改变它的值,求助各位。具体说明请看代码。
private static List friendList=new ArrayList<>();
private void initFriend() {
//加载好友数据
//此外,我为了测试List的赋值情况,在几个部分加入了测试代码。
//第一个测试代码
User user1=new User("小赵",“计院”);
friendList.add(user1);
//查询存放该用户的好友数据的数据库的ID这里是我用的bmob服务器,就是先去查询本用户的好友数据库的ID,在根据ID去加载该数据库内的好友数据
BmobQuery<FriendDatebase> query = new BmobQuery<FriendDatebase>();
query.addWhereEqualTo("myUser", bmobUser);
query.findObjects(new FindListener<FriendDatebase>() {
@Override
public void done(List<FriendDatebase> object,BmobException e) {
if(e==null){
**//第二个测试代码
User user2=new User("小钱","计院");
friendList.add(user2);**
//查询成功,接下来将好友数据的数据库传入本地,准备继续进行数据库内部的查询。
FriendDatebase friendDatebase=new FriendDatebase();
friendDatebase.setObjectId(object.get(0).getObjectId());//这步完成,friendDatebase即是本地用户的好友数据,接下来继续查询数据库内的数据
BmobQuery<User> query = new BmobQuery<User>();
query.addWhereRelatedTo("friend", new BmobPointer(friendDatebase));
query.findObjects(new FindListener<User>() {
@Override
public void done(List<User> object,BmobException e) {
if(e==null){
for (User gameScore : object) {
//创建变量去接收数据库内的好友信息,然后add
User friend = new User(gameScore.gettureName(), gameScore.getdepartment());
friendList.add(friend);
}
**//第三个测试代码
User user3=new User("小孙","计院");
friendList.add(user3);**
}else{
createDialog("失败",e.getErrorCode()+e.getMessage());
}
}
});
}else{
createDialog("失败",e.getErrorCode()+e.getMessage());
}
}
});
}
而整段代码执行后,没有报错。我确认过从数据库查询的部分是没有问题的,数据确实查下来了。但是赋值没有成功,结果显示在List数组中只有user1,没有user2和user3.我就不知道是什么情况,请各位注意三个user的位置,我想已经是阐述清楚问题了。拜托各位!