Externe SQL/PHP Daten in Listview

W

WolfCH

Ambitioniertes Mitglied
1
Hallo

Ich habe einige Tutorials und Codebeispiele angeschaut.
Nun kriege ich weder eine Fehlermeldung noch überhaupt Daten in die Listview. Die Activity bleibt also leer.

PHP liefert aber korrekt aus.

Woran kann das denn liegen??
Wenn ich extends Activity zu extends ListActivity ändere, dann gibts ebenfalls keine Fehler aber dann stürzt die App ab. Problem: Ich kann nichts im ADV testen, hab schon mehrmals neu eingerichtet aber ich bekomm immer ein Installfehler und somit teste ich die App direkt auf meinem Androidhandy.

Hier die sqlDBActivity:
Code:
public class sqlDBActivity extends Activity {
	
	final Context context = this;
	
	InputStream is;
	ArrayList<String> results = new ArrayList<String>();
	JSONObject json_data;
	 
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.sql_db);
		getData();
		
		//AlertBox (Info) anzeigen BETA TEST
				AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(context);

					// set title
					alertDialogBuilder.setTitle("BETA-TEST-DIALOG");

					// set dialog message
					alertDialogBuilder
						.setMessage("Hier werden die aktuell erfassten Unwetterwarnungen aufgelistet. Betrifft nicht die aktiven Warnungen. (Noch Nicht).\nDieser Dialog wird Dich nur während des Betatests nerven.\n\u00A9 Kurz Dominic, SCV Switzerland")
						.setCancelable(false)
						.setPositiveButton("Nerv mich nicht!",new DialogInterface.OnClickListener() {
							public void onClick(DialogInterface dialog,int id) {
								// if this button is clicked, close
								// current activity
								dialog.cancel();
							}
						  });
					
					// create alert dialog
					AlertDialog alertDialog = alertDialogBuilder.create();
					
					// show it
					alertDialog.show();

		
		//Zurückbutton
		
		Button btnSQL_back = (Button)findViewById(R.id.btnSQL_back);

		btnSQL_back.setOnClickListener(new View.OnClickListener()
		{
		    	@Override
		    	public void onClick(View v) {
		    	         // Activity-Aufruf hier rein.
		    		Intent in = new Intent(sqlDBActivity.this,MainActivity.class);
		    		in.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
		    	    startActivity(in);
		    		}
		});
		
		
	}
	
	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.main, menu);
		return true;
	}
	
	public void getData() {

		String result = "";
		 ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
		
		 try{
		 HttpClient httpclient = new DefaultHttpClient();
		 HttpPost httppost = new HttpPost("http://www.scvswitzerland.ch/test.php");
		 httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
		 HttpResponse response = httpclient.execute(httppost);
		 HttpEntity entity = response.getEntity();
		 is = entity.getContent();
		 }catch(Exception e){
		 Log.e("log_tag", "Fehler bei der http Verbindung "+e.toString());
		 }
	
	try{
			 BufferedReader reader = new BufferedReader(new InputStreamReader(is,"utf8_general_ci"),8);
			 StringBuilder sb = new StringBuilder();
			 String line = null;
			 while ((line = reader.readLine()) != null) {
			 sb.append(line + "n");
			 } 
			 is.close();
			 sb.deleteCharAt(0);
			 result=sb.toString();
			 result.trim();
			 //result=sb.toString();
			 }catch(Exception e){
			 Log.e("log_tag", "Error converting result "+e.toString());
			 }
	
	try{
			 JSONArray jArray = new JSONArray(result);
			 for(int i=0;i<jArray.length();i++){
			JSONObject json_data = jArray.getJSONObject(i);
			 results.add((String) json_data.get("kanton") + " "+ json_data.get("ereignis"));
			 } 
		 fillList();
			 }
			 catch(JSONException e){
			 Log.e("log_tag", "Error parsing data "+e.toString());
			 }
	}
	
	public void fillList() {
		// this.setListAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, results));
		ListAdapter adapter=new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, results);
        ListView list=(ListView)findViewById(R.id.listView1);
        list.setAdapter(adapter);
		 }
	
}




Grüsschen
Wolf
 
Schließ mal dein Handy an und gib uns mal die Fehlermeldung der LogCat
Android Tutorial #2: How To Use The LogCat Tool To Debug Applications - YouTube

Dann können wir dir auch gerne weiterhelfen.

Der ursprüngliche Beitrag von 12:27 Uhr wurde um 12:57 Uhr ergänzt:

Führst du den HTTP request im UIThread aus? Also nicht Synchron in einem anderen Thread`?
 
Zuletzt bearbeitet von einem Moderator:
Also mein Handy anschliessen am PC via USB und dann LogCat laufen lassen funzt bei mir iwie nicht. Habe einen MacBook Pro Retina.

Der Emulator funktioniert aufgrund folgendem Fehler auch nicht:
[2013-03-23 16:35:31 - SCVSwitzerland] Installing SCVSwitzerland.apk...
[2013-03-23 16:35:49 - SCVSwitzerland] Installation error: INSTALL_FAILED_MISSING_SHARED_LIBRARY
[2013-03-23 16:35:49 - SCVSwitzerland] Please check logcat output for more details.
[2013-03-23 16:35:49 - SCVSwitzerland] Launch canceled!

Egal ob ich die Funktion getData in einem Thread habe oder nicht, die App stürzt zwar nicht ab, aber ich bekomme keine Daten/Kein Text in das Listview.

Gruss
 
Ein tipp mach dich schlau wie du die Logcat zumm laufen bekommst, das hilft enorm weiter. ich kenne viele entwickler die das auch auf dem Mac zum laufen gebracht haben. Danach bist du Definitv schlauer, weil du siehst was er denn beim parsen deines JSON Objects falsch macht.
Noch ein Tipp pack das getData in ein asynctask oder einen Thread.
Und Json Parsen mach ich mittlerweile nur noch mit Gson, das erzeugt dir gleich objekte mit denen du dann machen kannst was auch immer du willst.

Viel Erfolg
 

Ähnliche Themen

M
  • mafoma63
Antworten
2
Aufrufe
762
swa00
swa00
A
Antworten
10
Aufrufe
1.021
swa00
swa00
B
Antworten
3
Aufrufe
1.307
swa00
swa00
Zurück
Oben Unten