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());
これは、例外がスローされるConnectionToServer.java部分(変換される行)にあります。
private ArrayList<HashMap<String, String>> getUsers()
{
ArrayList<HashMap<String, String>> usersList = new ArrayList<HashMap<String, String>>();
try {
Socket socket = new Socket(url, 8001);
ObjectOutputStream oos = new ObjectOutputStream(socket.getOutputStream());
oos.writeObject("GETUSERS");
ObjectInputStream ois = new ObjectInputStream(socket.getInputStream());
usersList = (ArrayList<HashMap<String, String>>) ois.readObject();
ois.close();
oos.close();
} catch (UnknownHostException e) {} catch (IOException e) {} catch (ClassNotFoundException e) {}
return usersList;
}
そして、これはサーバーがそれをAndroidアプリケーション(クライアント)に送信する方法です:
else if(messageArray[0].equals("GETUSERS"))
{
try {
//st.setUserFullName(messageArray[1], messageArray[2], messageArray[3]);
oos.writeObject(st.getUsers());
} catch (SQLException e) {oos.writeObject("[ERROR]");}
}
そして、これは呼び出されるメソッドです:
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;
}
あなたの助けに感謝します私は本当に感謝しています:)