我在Parse中有一个名为Customer_Information的表。并且有一个名为username的列。我想检索用户名列中的所有值并将其存储到数组中。存储后,我想将其设置为单个textview。这可能吗?我尝试过这段代码,但它有一个错误ArrayIndexOutOfBounds。
public class Users extends Activity{
private static final String tbname = "Customer_Information";
private static final String uname = "username";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.users);
TextView text = (TextView)findViewById(R.id.text);
ParseQuery query = new ParseQuery(tbname);{
try{
List<ParseObject> test = query.find();
for(int x=0;x<test.size();x++){
String[] str = {test.get(x).getString(uname)};
text.setText("Username: "+str[x]+"\n");
}
}
catch (com.parse.ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
答案 0 :(得分:0)
问题最有可能是这一行:
text.setText("Username: "+str[x]+"\n");
您正在尝试访问索引,但您正在使用x
访问它。如果所有ParseObject
都返回相同长度的数组,一段时间后,当x
增加时,它将变得大于该数组的最大索引,从而导致{ {1}}。
我建议你先做一些测试:打印出IndexOutOfBoundsException
的值,找出你需要的索引,然后更改该行,使其使用常量索引。基于这样一个事实,即你在
str
索引很可能是String[] str = {test.get(x).getString(uname)};//one element array
:
0
如果您不打算text.setText("Username: "+str[0]+"\n");
任何大于1的元素,请丢弃它并仅使用一个str
。