Android 分析的soapobject无法在listview中显示

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

我使用JAVA编写了一个简单的Web服务,从数据库中搜索数据并返回
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;
    }

}