Java Android-迭代列表时的空对象引用
我试图将一个在内部类中创建的列表“usrs”复制到另一个列表“team_memebers”。 复制之后,我尝试在FOR循环中迭代“team_memebers”,但得到了一个“null object reference”错误。 “用户”列表包含通过调试打印测试的返回对象Java Android-迭代列表时的空对象引用,java,android,nullreferenceexception,Java,Android,Nullreferenceexception,我试图将一个在内部类中创建的列表“usrs”复制到另一个列表“team_memebers”。 复制之后,我尝试在FOR循环中迭代“team_memebers”,但得到了一个“null object reference”错误。 “用户”列表包含通过调试打印测试的返回对象 public class ListNodeActivity extends AppCompatActivity { private ParseObject parse_task=null; private List
public class ListNodeActivity extends AppCompatActivity
{
private ParseObject parse_task=null;
private List<String> team_memebers=null;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_list_node);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
query.findInBackground(new FindCallback<ParseObject>() {
public void done(List<ParseObject> usrs, ParseException e) {
if (e == null) {
team_memebers = new ArrayList<String>(usrs.size());
for (ParseObject prso:usrs) {
team_memebers.add(new String(prso.getString("Username")));
}
} else {//handle the error
}
}
});
for (String str:team_memebers)
{
empolyeeSpinnerAdapter.add(str);
}
}
您的问题是复制列表后并没有进行迭代。
query.findInBackground()
是一个异步回调,因此不会立即执行。因为您的迭代循环位于该回调的下面,并不意味着它将在回调执行之后执行。只需将循环放在回调中,如下所示:
query.findInBackground(new FindCallback<ParseObject>() {
public void done(List<ParseObject> usrs, ParseException e) {
if (e == null) {
team_memebers = new ArrayList<String>(usrs.size());
for (ParseObject prso:usrs) {
team_memebers.add(new String(prso.getString("Username")));
}
for (String str:team_memebers)
{
empolyeeSpinnerAdapter.add(str);
}
} else {//handle the error
}
}
});
query.findInBackground(新的FindCallback(){
已完成公共作废(列出USR、Parsee){
如果(e==null){
team_memebers=newarraylist(usrs.size());
用于(ParseObject prso:usrs){
team_memebers.add(新字符串(prso.getString(“用户名”));
}
用于(字符串str:team_memebers)
{
empolyeeSpinnerAdapter.add(str);
}
}否则{//处理错误
}
}
});
您是否尝试了带计数器的普通for循环而不是foreach for循环?类似于(int i=0;istr
或team\u memebers
?无论如何,我建议您不要将null
赋值给team\u memebers
,而是声明它为final并用空列表初始化:私有最终列表team\u memebers=new ArrayList()
并删除这一行:team\u memebers=new ArrayList(usrs.size());
还声明str
为循环中的final:for(final String str:team\u memebers)
在“EmpolyeeSpinGeneralAdapter”上,然后声明str
为我所说的final。
query.findInBackground(new FindCallback<ParseObject>() {
public void done(List<ParseObject> usrs, ParseException e) {
if (e == null) {
team_memebers = new ArrayList<String>(usrs.size());
for (ParseObject prso:usrs) {
team_memebers.add(new String(prso.getString("Username")));
}
for (String str:team_memebers)
{
empolyeeSpinnerAdapter.add(str);
}
} else {//handle the error
}
}
});