java.util.arraylist 无法转换为 java.lang.object[]
java.util.arraylist cannot be cast to java.lang.object[]
所以在我下面的代码中,标有 *** 的行给了我异常
java.util.arraylist cannot be cast to java.lang.object[]
我正在尝试从 backendless 中检索用户列表。我创建了一个列表视图,该视图在正常添加到列表时有效。但不是在尝试获得响应时(对象)
public class UserRolesActivity extends AppCompatActivity {
ListView userListView;
TextView changeRoleTv;
List<String> list;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_user_roles);
userListView = (ListView) findViewById(R.id.usersListView);
list = new ArrayList<>();
changeRoleTv = (TextView) findViewById(R.id.chooseUserChangeTv);
Backendless.Data.mapTableToClass("Users", Users.class);
list.add("Name1");
list.add("Name2");
RetrieveUsers retrieveUsers = RetrieveUsers.getInstance();
retrieveUsers.getUsersAsync(new AsyncCallback<Object>() {
@Override
public void handleResponse(Object response) {
try{
*** Object [] result = (Object []) response; ***
List<Object> user = Arrays.asList(result);
for (int i = 0; i< user.size(); i++){
if (user.get(i) != null){
list.add(((Learner) user.get(i)).getFirstName().toString() + ": " + ((Learner) user.get(i)).getLastName().toString());
}
}
}catch (Exception e){
ShowToast(e.getMessage().toString());
}
userListView.setAdapter(new ArrayAdapter<String>(getApplicationContext(), android.R.layout.simple_list_item_1, list));
}
@Override
public void handleFault(BackendlessFault fault) {
ShowToast(fault.getMessage());
}
});
}
private void ShowToast(String message)
{
Toast.makeText(this, message, LENGTH_LONG).show();
}
}
响应的类型 java.uti.ArrayList 包装在对象类型下。你不能投
Arraylist 到对象数组。
你做的事情看起来有点啰嗦:
*** Object [] result = (Object []) response; ***
List<Object> user = Arrays.asList(result);
for (int i = 0; i< user.size(); i++){
if (user.get(i) != null){
list.add(((Learner) user.get(i)).getFirstName().toString() + ": " + ((Learner) user.get(i)).getLastName().toString());
}
}
可以同意:
List<?> users = (List<?>)response;
for (Object user : users) {
if (user != null){
// Some stuff
}
}
接下来您将遇到以下问题:
list.add(((Learner) user.get(i)).getFirstName().toString() + ": " + ((Learner) user.get(i)).getLastName().toString());
因为 user.get(i)).getFirstName().toString() + ": "
是一个字符串,然后您将其转换为类型 Learner
。你需要重新考虑这一点。
您可以将结果定义为
Object[] arr = new Object[]{...};
要将 List<Object>
转换为对象数组,请使用 .toArray()
方法:
Object[] result = response.toArray();
这就是原始异常的解决方案。
所以在我下面的代码中,标有 *** 的行给了我异常
java.util.arraylist cannot be cast to java.lang.object[]
我正在尝试从 backendless 中检索用户列表。我创建了一个列表视图,该视图在正常添加到列表时有效。但不是在尝试获得响应时(对象)
public class UserRolesActivity extends AppCompatActivity {
ListView userListView;
TextView changeRoleTv;
List<String> list;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_user_roles);
userListView = (ListView) findViewById(R.id.usersListView);
list = new ArrayList<>();
changeRoleTv = (TextView) findViewById(R.id.chooseUserChangeTv);
Backendless.Data.mapTableToClass("Users", Users.class);
list.add("Name1");
list.add("Name2");
RetrieveUsers retrieveUsers = RetrieveUsers.getInstance();
retrieveUsers.getUsersAsync(new AsyncCallback<Object>() {
@Override
public void handleResponse(Object response) {
try{
*** Object [] result = (Object []) response; ***
List<Object> user = Arrays.asList(result);
for (int i = 0; i< user.size(); i++){
if (user.get(i) != null){
list.add(((Learner) user.get(i)).getFirstName().toString() + ": " + ((Learner) user.get(i)).getLastName().toString());
}
}
}catch (Exception e){
ShowToast(e.getMessage().toString());
}
userListView.setAdapter(new ArrayAdapter<String>(getApplicationContext(), android.R.layout.simple_list_item_1, list));
}
@Override
public void handleFault(BackendlessFault fault) {
ShowToast(fault.getMessage());
}
});
}
private void ShowToast(String message)
{
Toast.makeText(this, message, LENGTH_LONG).show();
}
}
响应的类型 java.uti.ArrayList 包装在对象类型下。你不能投
Arraylist 到对象数组。
你做的事情看起来有点啰嗦:
*** Object [] result = (Object []) response; ***
List<Object> user = Arrays.asList(result);
for (int i = 0; i< user.size(); i++){
if (user.get(i) != null){
list.add(((Learner) user.get(i)).getFirstName().toString() + ": " + ((Learner) user.get(i)).getLastName().toString());
}
}
可以同意:
List<?> users = (List<?>)response;
for (Object user : users) {
if (user != null){
// Some stuff
}
}
接下来您将遇到以下问题:
list.add(((Learner) user.get(i)).getFirstName().toString() + ": " + ((Learner) user.get(i)).getLastName().toString());
因为 user.get(i)).getFirstName().toString() + ": "
是一个字符串,然后您将其转换为类型 Learner
。你需要重新考虑这一点。
您可以将结果定义为
Object[] arr = new Object[]{...};
要将 List<Object>
转换为对象数组,请使用 .toArray()
方法:
Object[] result = response.toArray();
这就是原始异常的解决方案。