Java Android套接字将对象转换为ArrayList

Java Android套接字将对象转换为ArrayList,java,android,sockets,object,Java,Android,Sockets,Object,我有一个从Android到Java应用程序的客户机-服务器连接。我所做的是使用writeObject编写ArrayList,这样我就可以在执行readObject后将其转换回ArrayList,但我遇到以下异常: 01-07 11:10:08.821: E/AndroidRuntime(1314): Caused by: java.lang.ClassCastException: java.lang.String cannot be cast to java.util.ArrayList 01-

我有一个从Android到Java应用程序的客户机-服务器连接。我所做的是使用writeObject编写ArrayList,这样我就可以在执行readObject后将其转换回ArrayList,但我遇到以下异常:

01-07 11:10:08.821: E/AndroidRuntime(1314): Caused by: java.lang.ClassCastException: java.lang.String cannot be cast to java.util.ArrayList
01-07 11:10:08.821: E/AndroidRuntime(1314):     at com.williamhenry.audiobolle.ConnectionToServer.getUsers(ConnectionToServer.java:127)
Android应用程序告诉服务器使用GETUSERS命令获取用户

这在MainActivity.java中

adapter=new ListAdapter(this, new ConnectionToServer().execute("GETUSERS").get());
这是在ConnectionServer.java部分中引发异常的部分(转换异常的行):

这就是所谓的方法:

public ArrayList<HashMap<String, String>> getUsers() throws SQLException
    {
        ArrayList<HashMap<String, String>> usersList = new ArrayList<HashMap<String, String>>();
        Statement statement = conn.createStatement();
        try {

            String query = "SELECT userID,username,status,fullname,lastonline FROM users";
            ResultSet resultSet = statement.executeQuery(query);
            try { 
                while (resultSet.next()) {
                    HashMap<String, String> map = new HashMap<String, String>();

                    // In Hashmap das Key und den Wert reinschreiben
                    map.put(KEY_ID, resultSet.getString("userID"));
                    map.put(KEY_USERNAME, resultSet.getString("username"));
                    map.put(KEY_STATUS, resultSet.getString("status"));
                    map.put(KEY_LASTONLINE, resultSet.getString("lastonline"));
                    map.put(KEY_THUMB_URL, resultSet.getString("thumb_url"));

                    // Hashlist in die ArrayList einfügen
                    usersList.add(map);
                }
            } finally {
                resultSet.close();
            }
        } finally {
            statement.close();
        }
        return usersList;
    }
public ArrayList getUsers()引发SQLException
{
ArrayList usersList=新的ArrayList();
语句Statement=conn.createStatement();
试一试{
String query=“从用户中选择用户名、用户名、状态、全名、lastonline”;
ResultSet ResultSet=statement.executeQuery(查询);
试试{
while(resultSet.next()){
HashMap=newHashMap();
//在Hashmap中,这是一把钥匙和一把钥匙
map.put(KEY_ID,resultSet.getString(“userID”);
map.put(KEY_用户名,resultSet.getString(“用户名”);
map.put(KEY_STATUS,resultSet.getString(“STATUS”);
map.put(KEY_LASTONLINE,resultSet.getString(“LASTONLINE”);
put(KEY_THUMB_URL,resultSet.getString(“THUMB_URL”));
//die ArrayList einfügen中的哈希表
添加(映射);
}
}最后{
resultSet.close();
}
}最后{
语句。close();
}
返回用户列表;
}

谢谢您的帮助,我非常感谢:)

查询中缺少字段
thumb\u url
。因此
resultSet.getString(“thumb_url”)
失败,服务器发送字符串
“[错误]”
,客户端无法将该字符串反序列化为列表

您可能可以执行以下操作:

Object result = ois.readObject();
if ("[ERROR]".equals(result)) {
   // something was wrong server side
   throw SomeException();
} else {
   usersList = (ArrayList<HashMap<String, String>>) result;
}
Object result=ois.readObject();
如果(“[错误]”。等于(结果)){
//服务器端出了问题
抛出SomeException();
}否则{
usersList=(ArrayList)结果;
}

但是我认为在服务器端捕获异常会更好,所以您使用套接字接收字符串并希望将其转换为arraylist?
public ArrayList<HashMap<String, String>> getUsers() throws SQLException
    {
        ArrayList<HashMap<String, String>> usersList = new ArrayList<HashMap<String, String>>();
        Statement statement = conn.createStatement();
        try {

            String query = "SELECT userID,username,status,fullname,lastonline FROM users";
            ResultSet resultSet = statement.executeQuery(query);
            try { 
                while (resultSet.next()) {
                    HashMap<String, String> map = new HashMap<String, String>();

                    // In Hashmap das Key und den Wert reinschreiben
                    map.put(KEY_ID, resultSet.getString("userID"));
                    map.put(KEY_USERNAME, resultSet.getString("username"));
                    map.put(KEY_STATUS, resultSet.getString("status"));
                    map.put(KEY_LASTONLINE, resultSet.getString("lastonline"));
                    map.put(KEY_THUMB_URL, resultSet.getString("thumb_url"));

                    // Hashlist in die ArrayList einfügen
                    usersList.add(map);
                }
            } finally {
                resultSet.close();
            }
        } finally {
            statement.close();
        }
        return usersList;
    }
Object result = ois.readObject();
if ("[ERROR]".equals(result)) {
   // something was wrong server side
   throw SomeException();
} else {
   usersList = (ArrayList<HashMap<String, String>>) result;
}