Android 分析的soapobject无法在listview中显示
我使用JAVA编写了一个简单的Web服务,从数据库中搜索数据并返回Android 分析的soapobject无法在listview中显示,android,web-services,android-listview,android-ksoap2,Android,Web Services,Android Listview,Android Ksoap2,我使用JAVA编写了一个简单的Web服务,从数据库中搜索数据并返回ArrayList。在我的Android客户端应用程序中,我使用Soap。我计划在列表视图中显示结果。作为Android应用程序进行调试时,结果显示在ListView中。当我只是将其作为Android应用程序运行时,结果无法显示在ListView中 这是我的Web服务代码和一些Android应用程序代码 我的Android代码: public class MainActivity extends Activity{ pri
ArrayList
。在我的Android客户端应用程序中,我使用Soap。我计划在列表视图中显示结果。作为Android应用程序进行调试时,结果显示在ListView中。当我只是将其作为Android应用程序运行时,结果无法显示在ListView中
这是我的Web服务代码和一些Android应用程序代码
我的Android代码:
public class MainActivity extends Activity{
private static final String NAMESPACE = "http://nuaaagetest";
private static String URL = "http://192.168.1.105:8080/nuaaagetest/services/test?wsdl";
private static final String METHOD_NAME = "getCourselist";
private static String SOAP_ACTION = NAMESPACE + METHOD_NAME;
private ListView courselist;
private ArrayList<String> clist = new ArrayList<String>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
accountInfo = getSharedPreferences("accoutInfo", Context.MODE_PRIVATE);
courselist = new ListView(this);
courselist.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_expandable_list_item_1,clist));
setContentView(courselist);
}
private class showTestasynctast extends AsyncTask<String, Integer, String>{
@Override
protected String doInBackground(String... Urls) {
showtestws();
return null;
}
protected void onPostExecute(String result) {
}
};
private void showtestws() {
String user = accountInfo.getString("account", null);
testws(user);
}
public void testws(String user) {
try {
SoapObject testsp = new SoapObject(NAMESPACE, METHOD_NAME);
testsp.addProperty("userid",user );
HttpTransportSE ht = new HttpTransportSE(URL);
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.bodyOut = testsp;
envelope.setOutputSoapObject(testsp);
ht.call(SOAP_ACTION, envelope);
SoapObject result = (SoapObject) envelope.bodyIn;
clist = parseCourse(result);
}catch(Exception e){
e.printStackTrace();
}
}
private ArrayList<String> parseCourse (SoapObject obj)throws UnsupportedEncodingException{
ArrayList<String> list = new ArrayList<String>();
for(int i=0; i<obj.getPropertyCount(); i++){
String str = obj.getProperty(i).toString();
list.add(str);
}
return list;
}
}
公共类MainActivity扩展活动{
私有静态最终字符串命名空间=”http://nuaaagetest";
专用静态字符串URL=”http://192.168.1.105:8080/nuaaagetest/services/test?wsdl";
私有静态最终字符串方法\u NAME=“getCourselist”;
私有静态字符串SOAP\u ACTION=名称空间+方法\u名称;
私有列表视图课程列表;
private ArrayList clist=new ArrayList();
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
accountInfo=GetSharedReferences(“accountInfo”,Context.MODE\u PRIVATE);
courselist=新的列表视图(此);
setAdapter(新的ArrayAdapter(这个,android.R.layout.simple_expandable_list_item_1,clist));
setContentView(课程列表);
}
私有类showTestasynctast扩展异步任务{
@凌驾
受保护的字符串doInBackground(字符串…URL){
showtestws();
返回null;
}
受保护的void onPostExecute(字符串结果){
}
};
私有void showtestws(){
String user=accountInfo.getString(“account”,null);
testws(用户);
}
公共void testws(字符串用户){
试一试{
SoapObject testsp=新的SoapObject(名称空间、方法名称);
testsp.addProperty(“userid”,用户);
HttpTransportSE ht=新的HttpTransportSE(URL);
SoapSerializationEnvelope=新的SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.bodyOut=testsp;
envelope.setOutputSoapObject(testsp);
ht.呼叫(SOAP_动作、信封);
SoapObject结果=(SoapObject)envelope.bodyIn;
clist=parseCourse(结果);
}捕获(例外e){
e、 printStackTrace();
}
}
私有ArrayList parseCourse(SoapObject obj)引发不受支持的编码异常{
ArrayList=新建ArrayList();
对于(inti=0;iyou正在做clist=parseCourse(result);
但您在哪里使用它?您能在上述语句之后检查clist
的size
,看看您是否实际获得了任何数据吗?
package nuaaagetest;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
public class test {
public ArrayList<String> getCourselist(String userid) {
ArrayList<String> courselist = new ArrayList<String>();
ResultSet rs;
String str;
try {
Class.forName("com.mysql.jdbc.Driver");
Connection connect = DriverManager.getConnection("jdbc:mysql://localhost:3306/nuaage","root","131209");
Statement stmt = connect.createStatement();
rs = stmt.executeQuery("select cnm_sc from SCourse where sid_sc = '"+ userid +"'");
while(rs.next()){
str = rs.getString("cnm_sc");
courselist.add(str);
}
}catch(SQLException e) {
e.printStackTrace();
}catch(ClassNotFoundException cnfex){
cnfex.printStackTrace();
}
return courselist;
}
}