0

アプリケーションに問題があります。データベースから json データを Android のカスタム クラスに渡して、これをリストに表示しようとしています。アプリを実行しても何も起こらず、エラーもリストも表示されません。誰かが私を助けることができれば、私はとても感謝しています!! :)

すべてのネットワーク処理は非同期で行われ、オブジェクトの配列を返そうとしているので、httphandler クラスの文字列を JSONArray に変換するときに、これが問題になる可能性があると思われます。

これが私の主な活動です

package com.example.test1;



import java.util.ArrayList; 
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import android.app.Activity;
import android.net.ParseException;
import android.os.AsyncTask;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.ListView;

public class clubpage extends Activity {

class Programme {

    public String name;
    public String event;
    public String price;

}

String clubphp = "http://10.0.2.2/corkgaa/Nemo.php";
String progString;
ArrayList<Programme> Programmedata = new ArrayList<Programme>();
ListView clublistview = (ListView)findViewById(R.id.listview1);

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.clubpage);

    new Dbhandler().execute(clubphp);   

    ArrayAdapter<Programme> adapter = new ArrayAdapter<Programme>(this,
            android.R.layout.simple_list_item_1, Programmedata);

    clublistview.setAdapter(adapter);


}   

public class Dbhandler extends AsyncTask<String, Void, ArrayList<Programme>> {

    protected ArrayList<Programme> doInBackground(String... arg0) {

ArrayList<Programme> arraydata = new ArrayList<Programme>();        
progString = httphandler.HttpGetExec(clubphp);

try{ 

    JSONArray jArray = new JSONArray(progString);
    JSONObject json_data=null; 

    for(int i=0;i<jArray.length();i++){ 

        json_data = jArray.getJSONObject(i); 
        Programme Progresult = new Programme();

        Progresult.name = json_data.getString("Name");
        Progresult.event = json_data.getString("Event");
        Progresult.price = json_data.getString("Price");

        arraydata.add(Progresult);

        }
    }
    catch(JSONException e1){ 

        }
    catch (ParseException e1) { 
        e1.printStackTrace();
        }
return arraydata;
    }

    @Override
    protected void onPostExecute(ArrayList<Programme> result) {

    Programmedata = result;
    }

}




@Override
protected void onPause() {
    // TODO Auto-generated method stub
    super.onPause();
}

}

ここのhttphandlerクラス:

package com.example.test1;

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient; 
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import android.util.Log;

public class httphandler {

//Main Dev setup

public static String HttpGetExec (String URI) {


    // TODO Auto-generated method stub
                String result = "no response"; 
                InputStream is = null; 
                StringBuilder sb = null;


                //http post 
                try{ 
                    HttpClient httpclient = new DefaultHttpClient(); 
                    HttpPost httppost = new HttpPost("http://10.0.2.2/corkgaa/Nemo.php"); 
                    HttpResponse response = httpclient.execute(httppost); 
                    HttpEntity entity = response.getEntity(); 
                    is = entity.getContent(); 
                    }
                catch(Exception e){ 
                        Log.e("log_tag", "Error in http connection"+e.toString()); 
                    }

                //convert response to string 
                try{ 
                    BufferedReader reader = new BufferedReader(new InputStreamReader(is,"iso-8859-1"),8); 
                    sb = new StringBuilder(); 
                    sb.append(reader.readLine() + "\n"); 
                    String line="0"; 
                    while ((line = reader.readLine()) != null) { 
                        sb.append(line + "\n");
                        } 
                    is.close(); 
                    result=sb.toString(); 
                    }
                catch(Exception e){ 
                    Log.e("log_tag", "Error converting result "+e.toString()); 
                    }

                return result;

                //aa=new ArrayAdapter<String>(clubpage.this, R.layout.listrow, R.id.title, result);
                //ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,R.layout.listrow, R.id.title, result);
                //listview.setAdapter(aa);

}

}

4

1 に答える 1

1

この行をonCreate後に移動しますsetContentView

clublistview = (ListView)findViewById(R.id.listview1);

そして、次の行を非同期タスクの onPostExecute に移動します。

ArrayAdapter<Programme> adapter = new ArrayAdapter<Programme>(this,
            android.R.layout.simple_list_item_1, Programmedata);

clublistview.setAdapter(adapter);

非同期タスクの実行中に、何らかの進行状況インジケーターを表示することを検討してください。

于 2013-03-11T14:43:53.890 に答える