ListView ohne ListActivity - Fehler you must have...

  • 14 Antworten
  • Neuester Beitrag
Diskutiere ListView ohne ListActivity - Fehler you must have... im Android App Entwicklung im Bereich Betriebssysteme & Apps.
W

WolfCH

Ambitioniertes Mitglied
Hallo Zusammen

Ich habe eine App mit Fragmenten und verschiedenen Layouts.
Da ich bei einem Layout nun Daten aus einer SQL-DB auslesen möchte via JSON und diese im ListView anzeigen lassen will, habe ich eine Listview erstellt.

Da es nicht möglich ist bei der Fragmentklasse einfach extends Activity zu extends ListActivity abzuändern, habe ich eine neue Klasse "FragmentListActivity" erstellt, welche dann ListActivity extended.

Diese dann eingebunden mittels "public class MainActivity extends FragmentListActivity". Nun möchte ich alles in der ListView anzeigen, doch die App beendet sich schon beim Start wieder und ich erhalte folgende Fehlermeldung:

04-20 20:19:17.399 1422-1422/com.stormchase.ssv_ufsig.ch E/AndroidRuntime FATAL EXCEPTION: main
Process: com.stormchase.ssv_ufsig.ch, PID: 1422
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.stormchase.ssv_ufsig.ch/com.stormchase.ssv_ufsig.ch.MainActivity}: java.lang.RuntimeException: Your content must have a ListView whose id attribute is 'android.R.id.list'
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2195)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245)
at android.app.ActivityThread.access$800(ActivityThread.java:135)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5017)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.RuntimeException: Your content must have a ListView whose id attribute is 'android.R.id.list'
at android.app.ListActivity.onContentChanged(ListActivity.java:243)
at com.stormchase.ssv_ufsig.ch.FragmentListActivity.onContentChanged(FragmentListActivity.java:231)
at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:293)
at android.app.Activity.setContentView(Activity.java:1929)
at com.stormchase.ssv_ufsig.ch.MainActivity.onCreate(MainActivity.java:146)
at android.app.Activity.performCreate(Activity.java:5231)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2159)
************at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245)
************at android.app.ActivityThread.access$800(ActivityThread.java:135)
************at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
************at android.os.Handler.dispatchMessage(Handler.java:102)
************at android.os.Looper.loop(Looper.java:136)
************at android.app.ActivityThread.main(ActivityThread.java:5017)
************at java.lang.reflect.Method.invokeNative(Native Method)
Die ListView hat aber die id "list", wie man hier sieht:
PHP:
<ListView
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:id="@android:id/list"/>
Hier die Klasse 'FragmentListActivity':
PHP:
package com.stormchase.ssv_ufsig.ch;
import android.app.ListActivity;
import android.os.Bundle;
import android.os.Handler;
import android.support.v4.app.FragmentActivity;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListAdapter;
import android.widget.ListView;


public class FragmentListActivity extends ListActivity {
    /**
     * This field should be made private, so it is hidden from the SDK.
     * {@hide}
     */
    protected ListAdapter mAdapter;
    /**
     * This field should be made private, so it is hidden from the SDK.
     * {@hide}
     */
    protected ListView mList;

    private Handler mHandler = new Handler();
    private boolean mFinishedStart = false;

    private Runnable mRequestFocus = new Runnable() {
        public void run() {
            mList.focusableViewAvailable(mList);
        }
    };

    /**
     * This method will be called when an item in the list is selected.
     * Subclasses should override. Subclasses can call
     * getListView().getItemAtPosition(position) if they need to access the
     * data associated with the selected item.
     *
     * @param l The ListView where the click happened
     * @param v The view that was clicked within the ListView
     * @param position The position of the view in the list
     * @param id The row id of the item that was clicked
     */
    protected void onListItemClick(ListView l, View v, int position, long id) {
    }

    /**
     * Ensures the list view has been created before Activity restores all
     * of the view states.
     *
     *@see Activity#onRestoreInstanceState(Bundle)
     */
    @Override
    protected void onRestoreInstanceState(Bundle state) {
        ensureList();
        super.onRestoreInstanceState(state);
    }

    /**
     * Updates the screen state (current list and other views) when the
     * content changes.
     *
     * @see Activity#onContentChanged()
     */
    @Override
    public void onContentChanged() {
        super.onContentChanged();
        View emptyView = findViewById(android.R.id.list);
        mList = (ListView)findViewById(android.R.id.list);
        if (mList == null) {
            throw new RuntimeException(
                    "Your content must have a ListView whose id attribute is " +
                            "'android.R.id.list'");
        }
        if (emptyView != null) {
            mList.setEmptyView(emptyView);
        }
        mList.setOnItemClickListener(mOnClickListener);
        if (mFinishedStart) {
            setListAdapter(mAdapter);
        }
        mHandler.post(mRequestFocus);
        mFinishedStart = true;
    }

    /**
     * Provide the cursor for the list view.
     */
    public void setListAdapter(ListAdapter adapter) {
        synchronized (this) {
            ensureList();
            mAdapter = adapter;
            mList.setAdapter(adapter);
        }
    }

    /**
     * Set the currently selected list item to the specified
     * position with the adapter's data
     *
     * @param position
     */
    public void setSelection(int position) {
        mList.setSelection(position);
    }

    /**
     * Get the position of the currently selected list item.
     */
    public int getSelectedItemPosition() {
        return mList.getSelectedItemPosition();
    }

    /**
     * Get the cursor row ID of the currently selected list item.
     */
    public long getSelectedItemId() {
        return mList.getSelectedItemId();
    }

    /**
     * Get the activity's list view widget.
     */
    public ListView getListView() {
        ensureList();
        return mList;
    }

    /**
     * Get the ListAdapter associated with this activity's ListView.
     */
    public ListAdapter getListAdapter() {
        return mAdapter;
    }

    private void ensureList() {
        if (mList != null) {
            return;
        }
        setContentView(com.stormchase.ssv_ufsig.ch.R.layout.fragment_spl);

    }

    private AdapterView.OnItemClickListener mOnClickListener = new AdapterView.OnItemClickListener() {
        public void onItemClick(AdapterView<?> parent, View v, int position, long id)
        {
            onListItemClick((ListView)parent, v, position, id);
        }
    };
}
Der Code im Fragment wo die Daten ausliest:
PHP:
private ListView lv;
    InputStream is;
    	ArrayList<String> results = new ArrayList<String>();
    	org.json.JSONObject json_data;

    public void getData() {
        String result = "";
        ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();

        try {
            HttpClient httpclient = new DefaultHttpClient();
            HttpPost httppost = new HttpPost("http://www.ssv-ufs.ch/app/spl_db_android.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,"iso-8859-1"),8);
            	 StringBuilder sb = new StringBuilder();
            	 String line = null;
            	 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());
            	 }

        try{
            	 JSONArray jArray = new JSONArray(result);
            	 for(int i=0;i<jArray.length();i++){
                	 json_data = jArray.getJSONObject(i);
                     results.add((String) json_data.get("name") + " " + json_data.get("ort"));
                	 }
            fillList();
            	 }
        	 catch(JSONException e){
             Log.e("log_tag", "Error parsing data "+e.toString());
            	 }
        	}


    public void fillList() {
        lv = (ListView) findViewById(android.R.id.list);
        	 lv.setAdapter(new ArrayAdapter<String>(this, R.layout.fragment_spl, results));
        	 }
Aber ich denke der Fehler kommt von der Klasse.
Wieso ich immer 'Your content must have a ListView whose id attribute is 'android.R.id.list'' erhalte, obwohl die ID vorhanden ist, ist mir ein rätsel.

Jemand eine Idee??
Ebenso erhalte ich auch die Fehlermeldung: 'Fehler bei der http Verbindung'.... obwohl Permission INTERNET gesetzt und auch die Datei komplett ok ist, denn ich erhalte alle Ergebnise als json zurück, wie hier zu sehen ist: http://www.ssv-ufs.ch/app/spl_db_android.php
 
Xilent

Xilent

Fortgeschrittenes Mitglied
Hallo,

hast du schonmal ausprobiert die ListView auf eine andere ID zu setzen ( z.b. android:id="@+id/listview") und diese dann zu definieren findViewById(R.id.listview) ?

Weiterhin gibt es ein Problem mit der JSON Response.

Da scheint ein Fehler drin zu sein, denn ich krieg als Response:
Code:
<html>
   <head>
      <meta content="HTML Tidy for Java (vers. 26 Sep 2004), see www.w3.org" name="generator"/>
      <title>406 Not Acceptable</title>
   </head>
   <body>
      <h1>Not Acceptable</h1>
      <p>An appropriate representation of the requested resource /app/spl_db_android.php could not be found on this server.</p>
      <p>Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request.</p>
      <hr/>
      <address>Apache Server at ssv-ufs.ch Port 80</address>
   </body>
</html>
Im Browser sieht das zwar ok aus aber ich schätze da gibt es ein Formatierungsproblem. Hast du Zugriff auf den PHP Code und könntest du mal posten wie du das ausgibst?

Gruß
Xilent

Edit:
Außerdem versuchst du httppost zu senden.. Http Get würde doch reichen, oder versuchst du Daten an die URL zu senden?
siehe hierzu: HTTP Methods GET vs POST
Hier ein beispiel für HttpGet:
Code:
HttpClient httpclient = new DefaultHttpClient();


			// Prepare a request object
			HttpGet httpget = new HttpGet(url);
                        //Sends an AcceptHeader ex: application/json
			//httpget.addHeader("Accept",AcceptType);
			HttpResponse response = httpclient.execute(httpget);
			HttpEntity entity = response.getEntity();
			is = entity.getContent();
 
Zuletzt bearbeitet:
W

WolfCH

Ambitioniertes Mitglied
Hi, Danke erstmal für diese (WOW!) ausführliche Antwort. :thumbsup:

Wie meinst Du das bezüglich Formatierungsproblem mit PHP? Ich dachte, wenn es im Browser korrekt ausgegeben ist dann sollte es auch stimmen? Wie Du schon sagtest, im Browser sieht es gut aus.

Hier mal den PHP Code (es kommt automatisch der Code von 'Default' in Einsatz, die anderen Abfragen sind schon da, weil anschliessen auch Spotterpaltzdetails abgefragt werden usw.):

PHP:
<?php
    
    //DATABASE SETTINGS
    $dbconfig['host'] = 'localhost';
    $dbconfig['user'] = 'SSVUFS';
    $dbconfig['base'] = '*******;
    $dbconfig['pass'] = '********';
    $dbconfig['char'] = 'utf8';
    
    switch($_REQUEST['option'])
    {
            
		case 'suchen':
		{
            
            try {
                $search = new PDO('mysql:host='.$dbconfig['host'].';dbname='.$dbconfig['base'].';charset='.$dbconfig['char'].';', $dbconfig['user'], $dbconfig['pass']);
            }
            catch(PDOException $e) {
                exit('Unable to connect Database.');
            }
            
			$volltext = "%".$_REQUEST['search_text']."%";
			$SK = $_REQUEST['search_kanton'];
			$SL = $_REQUEST['search_land'];
            
            $query_spl_search = $search->prepare("SELECT * FROM spotterplaces WHERE MATCH (name, img, beschreibung, strasse, plz, ort, kanton, land, lat, lon, schutz) AGAINST ('".$volltext."') AND kanton LIKE '".$SK."' AND land LIKE '".$SL."' AND active=1");
            $query_spl_search->execute();

            while($row_search = $query_spl_search->fetch(PDO::FETCH_ASSOC))
            {
                if($colorCounter % 2 == 0){
                    $farbe = '#000000';
                    $font_farbe = '#FFFFFF';
                }else{
                    $farbe = '#C0C0C0';
                    $font_farbe = '#000000';
                }
                
                $suchen   = array( '&auml;', '&ouml;', '&uuml;');
                $ersetzen = array( 'ae', 'oe', 'ue');
                
                $ersetzen2   = array( '&auml;', '&ouml;', '&uuml;');
                $suchen2 = array( 'ae', 'oe', 'ue');
                $search_name     = str_replace( $suchen2, $ersetzen2, $row_search['name']);
                $search_name_konvert     = str_replace( $suchen, $ersetzen, $row_search['name']);

            }
            
            $search = null;
            break;
		}
            
            
        case 'detail':
        {
            try {
                $SSV = new PDO('mysql:host='.$dbconfig['host'].';dbname='.$dbconfig['base'].';charset='.$dbconfig['char'].';', $dbconfig['user'], $dbconfig['pass']);
            }
            catch(PDOException $e) {
                exit('Unable to connect Database.');
            }
            
            $query_spl_detail = $SSV->prepare("SELECT name, beschreibung, strasse, plz, ort, kanton, land, lat, lon, schutz, quelle FROM spotterplaces WHERE name='".$_REQUEST['name_detail']."' AND plz='".$_REQUEST['plz_detail']."' AND kanton='".$_REQUEST['kanton_detail']."' AND land='".$_REQUEST['land_detail']."' AND active=1 LIMIT 1");
            $query_spl_detail->execute();
            
            $query_spl_detail_images = $SSV->prepare("SELECT img, img2, img3 FROM spotterplaces WHERE name='".$_REQUEST['name_detail']."' AND plz='".$_REQUEST['plz_detail']."' AND kanton='".$_REQUEST['kanton_detail']."' AND land='".$_REQUEST['land_detail']."' AND active=1 LIMIT 1");
            $query_spl_detail_images->execute();
            
            
            //Spotterplatz-Details
            while($row_detail = $query_spl_detail->fetch(PDO::FETCH_ASSOC))
            {
                
                $ersetzen2   = array( '&auml;', '&ouml;', '&uuml;');
                $suchen2 = array( 'ae', 'oe', 'ue');
                $row_detail_name     = str_replace( $suchen2, $ersetzen2, $row_detail['name']);
                
            }

            while($row_detail_images = $query_spl_detail_images->fetch(PDO::FETCH_ASSOC))
            {
            }
            
            $SSV=null;
            
            break;
        }
            
        default:
        {
            try {
                $SSV = new PDO('mysql:host='.$dbconfig['host'].';dbname='.$dbconfig['base'].';charset='.$dbconfig['char'].';', $dbconfig['user'], $dbconfig['pass']);
            }
            catch(PDOException $e) {
                exit('Unable to connect Database.');
            }
            
            if(!isset($_REQUEST['sort']))
            {
                $sort = "name";
                $url_sort = "&sort=name";
            }
            else
            {
                $sort = $_REQUEST['sort'];
                $url_sort = "&sort=".$_REQUEST['sort'];
            }
            
            if(!isset($_REQUEST['filter']))
            {
                $filter = "ASC";
                $url_filter = "&filter=ASC";
            }
            else
            {
                $filter = $_REQUEST['filter'];
                $url_sort = "&sort=".$_REQUEST['filter'];
            }
            
            if(!isset($_REQUEST['filter_kanton']))
            {
                $filter_like_kanton = "all";
                $url_filter_kanton = "&filter_kanton=all";
            }
            
            else
            {
                $filter_like_kanton = $_REQUEST['filter_kanton'];
                $url_filter_kanton = "&filter_kanton=".$_REQUEST['filter_kanton'];
            }
            
            if(!isset($_REQUEST['filter_land']))
            {
                $filter_like_land = "all";
                $url_filter_land = "&filter_land=all";
            }
            
            else
            {
                $filter_like_land = $_REQUEST['filter_land'];
                $url_filter_land = "&filter_land=".$_REQUEST['filter_land'];
            }
            
            $url_path = "spl_db_android.php?option=default".$url_filter_kanton.$url_filter_land.$url_sort.$url_filter;
            
            
            //Workaround wegen dem %-Zeichen (da in HTTP_QUERY_STRING nicht erlaubt und zu Problemen fŸhrt)
            if($filter_like_kanton == "all")
            {
                $flt_kanton = "%";
            }
            else
            {
                $flt_kanton = $_REQUEST['filter_kanton'];
            }
            
            if($filter_like_land == "all")
            {
                $flt_land = "%";
            }
            else
            {
                $flt_land = $_REQUEST['filter_land'];
            }
            
            $query_list_spl = $SSV->prepare("SELECT name, img, kurzbeschrieb, strasse, plz, ort, kanton, land, lat, lon, schutz FROM spotterplaces WHERE kanton LIKE '".$flt_kanton."' AND land LIKE '".$flt_land."' AND active=1 ORDER BY ".$sort." ".$filter."");
            $query_list_spl->execute();
            
            while($row_list = $query_list_spl->fetch(PDO::FETCH_ASSOC))
            {
                if($colorCounter % 2 == 0){
                    $farbe = '#000000';
                    $font_farbe = '#FFFFFF';
                }else{
                    $farbe = '#C0C0C0';
                    $font_farbe = '#000000';
                }
                
                $suchen   = array( '&auml;', '&ouml;', '&uuml;');
                $ersetzen = array( 'ae', 'oe', 'ue');
                
                $ersetzen2   = array( '&auml;', '&ouml;', '&uuml;');
                $suchen2 = array( 'ae', 'oe', 'ue');
                $row_list_name     = str_replace( $suchen2, $ersetzen2, $row_list['name']);
                $row_list_name_konvert     = str_replace( $suchen, $ersetzen, $row_list['name']);
                
                echo json_encode($row_list);
            
            }

            $SSV=null;
            
            break;
        }
    }
    
    ?>
Die Listview hatte schon einen andere ID wie list_spl, und das mit findViewByID ging nicht, da erhielt ich auch die ganze Zeit die Meldung dass die ID android.R.list sein muss ... Dann hab ich es so geändert und die Meldung erscheint noch immer.

Ich werde nochmals paar Sachen versuchen. :)
 
Xilent

Xilent

Fortgeschrittenes Mitglied
Hi,

sooo hab den Fehler gefunden. Das Problem ist, dass du mehrere Root-Elements hast. JSON schreibt aber vor, dass es nur eins sein darf. Hier ein beispiel von meiner HP:
Code:
                                if ($result->num_rows > 0)
                                {
                                        // display records in a table
                                 
                                        $loop = 0;
                                        while ($row = $result->fetch_object())
                                        {
											
                                                // set up a row for each record
												$sample = array(
												'name'=>$row->name,
												'description'=>$row->description,
												'type'=>$row->type,
												'subtype'=>$row->subtype,
												'changelog'=>$row->changelog,
												'version'=>$row->version,
												'download'=>$row->download,
												'md5sum'=>$row->md5sum,
												'date_time'=>$row->date_time);
                                                $MasterArray[] = $sample;
										}
										}
			                      else
                                {
                                        echo "No results to display!";
                                }
                        }
                        // show an error if there is an issue with the database query
                        else
                        {
                                echo "Error: " . $mysqli->error;
                        }
header('Content-Type: application/json');
echo json_encode(array('updates' => $MasterArray));
deutlich zu erkennen, dass ich am Ende das Alles in ein weiteres Array setze.
Das ganze sieht dann so aus:
Code:
{"updates":[{"name":"ADBWifi","description":"Install ADB Wifi","type":".apk","subtype":"System","changelog":"http:\/\/xxx\/updatecenter\/changelog.txt","version":"1.0.0","download":"http:\/\/xxx\/updatecenter\/adbwifi.apk","md5sum":"358b1ad5656b8116fb34c407514fe8ef","date_time":"2014-01-25"},{"name":"BootAnimation","description":"Test System Update","type":".zip","subtype":"Other","changelog":"http:\/\/xxx\/updatecenter\/changelog.txt","version":"1.0.0","download":"http:\/\/xxx\/updatecenter\/bootanimation.zip","md5sum":"44ca0a867831e301779905695517c6c3","date_time":"2014-01-25"},{"name":"CWM","description":"Install ClockWorkMod Recovery","type":".zip","subtype":"Other","changelog":"http:\/\/xxx\/updatecenter\/changelog.txt","version":"1.0.0","download":"http:\/\/xxx\/updatecenter\/cwm.zip","md5sum":"051e29934fa75f5dd263f5fca9400353","date_time":"2014-01-26"},{"name":"Settings","description":"Modified Settings","type":".zip","subtype":"Other","changelog":"http:\/\/xxx\/updatecenter\/changelog.txt","version":"1.0.5","download":"http:\/\/xxx\/updatecenter\/settings.zip","md5sum":"1e53b05ddfea9185a02413c63561a166","date_time":"2014-04-16"}]}
Also setz dem ganzen Inhalt noch ein Root-Element vor , wie z.b. bei mir "updates".
Testen ob es korrekt funktioniert kannst du übrigens mit einem JSON-Formatter(JSON Formatter & Validator) oder ner Software wie z.b. SOAPUI, wie ich sie nutze. Dann wird die Response auch übersichtlicher Wiedergegeben.

Gruß
Xilent
 
W

WolfCH

Ambitioniertes Mitglied
Komisch, ich kann machen was ich will, auch mit implode aber der JSON Formatter&Validator sagt immer dasselbe: Multiple JSON Root Elements.

Hat jetzt zwar nichts mit Android zu tun aber meine Abfrage sieht nun so aus (habe es mal von Dir abgeleitet):

PHP:
            try {
                $SSV = new PDO('mysql:host='.$dbconfig['host'].';dbname='.$dbconfig['base'].';charset='.$dbconfig['char'].';', $dbconfig['user'], $dbconfig['pass']);
            }
            catch(PDOException $e) {
                exit('Unable to connect Database.');
            }
            
    
            $query_list_spl = $SSV->prepare("SELECT name, img, kurzbeschrieb, strasse, plz, ort, kanton, land, lat, lon, schutz FROM spotterplaces WHERE active=1 ORDER BY name");
            $query_list_spl->execute();
            
            while($row_list = $query_list_spl->fetch(PDO::FETCH_OBJ))
            {
                
                
                
                /*$suchen   = array( '&auml;', '&ouml;', '&uuml;');
                $ersetzen = array( 'ae', 'oe', 'ue');
                
                $ersetzen2   = array( '&auml;', '&ouml;', '&uuml;');
                $suchen2 = array( 'ae', 'oe', 'ue');
                $row_list_name     = str_replace( $suchen2, $ersetzen2, $row_list['name']);
                $row_list_name_konvert     = str_replace( $suchen, $ersetzen, $row_list['name']);*/
                
                $sample = array(
                                'name'=>$row_list->name,
                                'kurzbeschrieb'=>$row_list->kurzbeschrieb,
                                'strasse'=>$row_list->strasse,
                                'plz'=>$row_list->plz,
                                'ort'=>$row_list->ort,
                                'kanton'=>$row_list->kanton,
                                'land'=>$row_list->land,
                                'lat'=>$row_list->lat,
                                'lon'=>$row_list->lon);
                
                $MasterArray[] = $sample;
                
                header('Content-Type: application/json');
                echo json_encode(array('spl' => $MasterArray));
            }
    
            $SSV=null;
 
Xilent

Xilent

Fortgeschrittenes Mitglied
Du machst einen Fehler, denn die Ausgabe ist in einer while schliefe und gibt daher bei jeden Element ein Root Element aus.

Versuche mal folgendes:
Code:
            try { 
                $SSV = new PDO('mysql:host='.$dbconfig['host'].';dbname='.$dbconfig['base'].';charset='.$dbconfig['char'].';', $dbconfig['user'], $dbconfig['pass']); 
            } 
            catch(PDOException $e) { 
                exit('Unable to connect Database.'); 
            } 
             
     
            $query_list_spl = $SSV->prepare("SELECT name, img, kurzbeschrieb, strasse, plz, ort, kanton, land, lat, lon, schutz FROM spotterplaces WHERE active=1 ORDER BY name"); 
            $query_list_spl->execute(); 
             
            while($row_list = $query_list_spl->fetch(PDO::FETCH_OBJ)) 
            { 
                 
                 
                 
                /*$suchen   = array( '&auml;', '&ouml;', '&uuml;'); 
                $ersetzen = array( 'ae', 'oe', 'ue'); 
                 
                $ersetzen2   = array( '&auml;', '&ouml;', '&uuml;'); 
                $suchen2 = array( 'ae', 'oe', 'ue'); 
                $row_list_name     = str_replace( $suchen2, $ersetzen2, $row_list['name']); 
                $row_list_name_konvert     = str_replace( $suchen, $ersetzen, $row_list['name']);*/ 
                 
                $sample = array( 
                                'name'=>$row_list->name, 
                                'kurzbeschrieb'=>$row_list->kurzbeschrieb, 
                                'strasse'=>$row_list->strasse, 
                                'plz'=>$row_list->plz, 
                                'ort'=>$row_list->ort, 
                                'kanton'=>$row_list->kanton, 
                                'land'=>$row_list->land, 
                                'lat'=>$row_list->lat, 
                                'lon'=>$row_list->lon); 
                 
                $MasterArray[] = $sample; 
                 

            } 
             header('Content-Type: application/json'); 
             echo json_encode(array('spl' => $MasterArray)); 
            $SSV=null;
LG
Xilent
 
W

WolfCH

Ambitioniertes Mitglied
OK, das wars, Danke. :)

Der Fehler mit dem android.R.list kommt immer noch, egal was auch mache.
Ebenfalls "Error: keine Verbindung zu....".

Wo hast Du den 406 Fehler erhalten?

Ich hab jetzt eine eigene ID Vergeben (spl_list) und das auch so geändert, der Fehler bleibt leider:

PHP:
    @Override
    public void onContentChanged() {
        super.onContentChanged();
        View emptyView = findViewById(R.id.spl_list); //ID der Listview spl_list
        mList = (ListView)findViewById(R.id.spl_list);
        if (mList == null) {
            throw new RuntimeException(
                    "Your content must have a ListView whose id attribute is " +
                            "'android.R.id.list'"); //<--- Das hier erhalte ich immer wieder
        }
        if (emptyView != null) {
            mList.setEmptyView(emptyView);
        }
        mList.setOnItemClickListener(mOnClickListener);
        if (mFinishedStart) {
            setListAdapter(mAdapter);
        }
        mHandler.post(mRequestFocus);
        mFinishedStart = true;
    }
Liegt es vielleicht auch daran dass die Klasse FragmentListActivity erst noch in der MainActivity implementiert werden muss? Das hab ich damit doch gemacht:
PHP:
public class MainActivity extends FragmentListActivity
        implements NavigationDrawerFragment.NavigationDrawerCallbacks {
Die Klasse FragmentListActivity beginnt so:
PHP:
public class FragmentListActivity extends ListActivity {
 
Zuletzt bearbeitet:
Xilent

Xilent

Fortgeschrittenes Mitglied
Zuletzt bearbeitet:
W

WolfCH

Ambitioniertes Mitglied
So, hab mir jetzt auch SOAPUI installiert, das mod_Security Problem hab ich jetzt gelöst und erhalte folgendes zurück:
<Response>
<e>
<e>
<kanton>AG</kanton>
<kurzbeschrieb>Dieser Platz bietet eine kleine aber feine Picknick- und Grillierstelle mit Bank, Tisch und Abfalleimer. Parkierm&amp;ouml;glichkeit bis zu vier Fahrzeugen. Freie Sicht nach Koblenz, Deutschland, den n&amp;ouml;rdlichen Aargau und teils Jura sowie Ostschweiz.</kurzbeschrieb>
<land>CH</land>
<lat>47.587500</lat>
<lon>8.249886</lon>
<name>Achenberg</name>
<ort>Klingnau</ort>
<plz>5313</plz>
<strasse>Schlagenstrasse</strasse>
</e>
<e>
<kanton>ZH</kanton>
<kurzbeschrieb>Sicht &amp;uuml;ber das Reusstal, das Freiamt oder Richtung Voralpen. Ideal f&amp;uuml;r Gewitter welche den Voralpen entlang ziehen oder von West nach Ost ziehen.
Kein Schutz fürs Auto.</kurzbeschrieb>
<land>CH</land>
<lat>47.270730</lat>
<lon>8.480909</lon>
<name>Aeugst</name>
<ort>Aeugst am Albis</ort>
<plz>8914</plz>
<strasse>Sonnenbergstrasse 10</strasse>
</e>
<e>
<kanton>AG</kanton>
<kurzbeschrieb>Gut zu erreichen n&amp;auml;he Autobahnverzweigung. Von der Autobahnausfahrt Grandson gelangt man in ca. 20 Minuten zum Hotel/Restaurant auf dem Chasseron. Auf dem Kulminationspunkt hat man unter anderem einen sch&amp;ouml;nen Blick von NW bis NO.</kurzbeschrieb>
<land>CH</land>
<lat>47.444321</lat>
<lon>8.227397</lon>
<name>Birrfeld</name>
<ort>Lupfig</ort>
<plz>5242</plz>
<strasse>Birrfeldstrasse</strasse>
</e>
<e>
<kanton>LU</kanton>
<kurzbeschrieb>Schlicht und einfach gehaltener Grillplatz zum Radioweg Berom&amp;uuml;nster auf dem Blosenberg. Parkiert wird am ende des Feldweges. Hier bietet sich ein Rundumblick ins Wallis, in die Zentralschweiz, den Aargau sowie den Zigerschlitz und je nach Luftklarheit bis ins Tessin.</kurzbeschrieb>
<land>CH</land>
<lat>47.186560</lat>
<lon>8.176458</lon>
<name>Blosenberg</name>
<ort>Gunzwil</ort>
<plz>6222</plz>
<strasse>Blosenberg 1</strasse>
</e>
<e>
<kanton>AG</kanton>
<kurzbeschrieb>Nah bei Brugg bietet ein kleiner Parkplatz an der B&amp;ouml;zbergstrasse weite Sicht ins Mitelland, vor allem Richtung Luzern und Z&amp;uuml;rich. Ebenso deckt er den gr&amp;ouml;ssten Teil des Kantons Aargau als &amp;Uuml;berblick ab.</kurzbeschrieb>
<land>CH</land>
<lat>47.478878</lat>
<lon>8.160929</lon>
<name>Boezberg</name>
<ort>B&amp;ouml;zberg</ort>
<plz>5224</plz>
<strasse>B&amp;ouml;zbergstrasse</strasse>
</e>
<e>
<kanton>BE</kanton>
<kurzbeschrieb>Ein Restaurant zur Verpflegung, ein Vordach zum Schutz vor Regen oder Hagel sowie ein grosser Parkplatz bietet eine gute Grundlage zur Unwetterbeobachtung.</kurzbeschrieb>
<land>CH</land>
<lat>47.172171</lat>
<lon>7.284069</lon>
<name>Boezingenberg</name>
<ort>Biel</ort>
<plz>2504</plz>
<strasse>B&amp;ouml;zingenbergstrasse 123</strasse>
</e>
<e>
<kanton>BE</kanton>
<kurzbeschrieb>Ist vom Blasenhorn / Blasen aus in kaum zwei Minuten zu erreichen. Daf&amp;uuml;r geht es von Blasen aus Richtung O runter und auf der anderen Seite gleich wieder einigermassen steil rauf.</kurzbeschrieb>
<land>CH</land>
<lat>46.927121</lat>
<lon>7.690081</lon>
<name>Buemersbuch</name>
<ort>Oberthal</ort>
<plz>3531</plz>
<strasse>Hargarten 132</strasse>
</e>
<e>
<kanton>BE</kanton>
<kurzbeschrieb>Aussicht von SW (Guggisberg) &amp;uuml;ber S (Berner Alpen) bis E (Napf).</kurzbeschrieb>
<land>CH</land>
<lat>46.843247</lat>
<lon>7.465441</lon>
<name>Buetschelegg</name>
<ort>R&amp;uuml;eggisber</ort>
<plz>3088</plz>
<strasse>B&amp;uuml;tschelegg 112B</strasse>
</e>
<e>
<kanton>Baden-Wuerttemberg</kanton>
<kurzbeschrieb>Beobachtungspunkt Aasen. &amp;ouml;stlich Donaueschingen nahe der A81</kurzbeschrieb>
<land>DE</land>
<lat>47.979624</lat>
<lon>8.559397</lon>
<name>Chasepoint Aasen</name>
<ort>Aasen</ort>
<plz>78166</plz>
<strasse>Ostbaarstrasse 31</strasse>
</e>
<e>
<kanton>VD</kanton>
<kurzbeschrieb>Einmaliger 360 Grad-Rundblick. Vielmals bleiben die Gewitter an der markierten Stelle hängen.</kurzbeschrieb>
<land>CH</land>
<lat>46.850560</lat>
<lon>6.537890</lon>
<name>Chasseron</name>
<ort>Bullet</ort>
<plz>1452</plz>
<strasse>Chemin du Chasseron</strasse>
</e>
<e>
<kanton>BE</kanton>
<kurzbeschrieb>Schnell ab Autobahnausfahrt Flamatt - Neuenegg - Bramberg erreichbar. Man ist ungeschützt und ein Baum ziert den Aussichtspunkt.</kurzbeschrieb>
<land>CH</land>
<lat>46.900884</lat>
<lon>7.266716</lon>
<name>Chutzen</name>
<ort>Neuenegg</ort>
<plz>3176</plz>
<strasse>Oberwil 226</strasse>
</e>
<e>
<kanton>ZH</kanton>
<kurzbeschrieb>Der Zentralschweiz m&amp;ouml;glichst nah zu sein und doch noch den &amp;Uuml;berblick zu behalten kann man bei diesem Spotterplatz. Die Autos werden am Strassenrand parkiert, eine Sitzbank sowie ein Abfalleimer sind vorhanden.</kurzbeschrieb>
<land>CH</land>
<lat>47.224206</lat>
<lon>8.555946</lon>
<name>Ebertswil</name>
<ort>Hausen am Albis</ort>
<plz>8925</plz>
<strasse>Houen 109</strasse>
</e>
<e>
<kanton>AG</kanton>
<kurzbeschrieb>Ideale Sicht &amp;uuml;ber das gesamte Reusstal. Ideal f&amp;uuml;r Gewitter welche von West nach Ost ziehen. Kein Schutz f&amp;uuml;rs Auto.</kurzbeschrieb>
<land>CH</land>
<lat>47.398206</lat>
<lon>8.348182</lon>
<name>Egelseestrasse</name>
<ort>Bellikon</ort>
<plz>5454</plz>
<strasse>Egelseestrasse 10</strasse>
</e>
<e>
<kanton>TG</kanton>
<kurzbeschrieb>Hervoragender, erh&amp;ouml;hter Aussichtspunkt mit freier Sicht nach N und NO (Richtung Schwarzwald/Bodensee) oder dann von der Terrasse des Restaurants nach SW, S und SO ins Z&amp;uuml;rcher Oberland, Toggenburg und zum S&amp;auml;ntis.</kurzbeschrieb>
<land>CH</land>
<lat>47.46953</lat>
<lon>8.966212</lon>
<name>Eschlikon - Saentisblick</name>
<ort>M&amp;uuml;nchwilen</ort>
<plz>8360</plz>
<strasse>S&amp;auml;ntisblick 8</strasse>
</e>
<e>
<kanton>ZH</kanton>
<kurzbeschrieb>Super Blick Richtung Westen (bis zur L&amp;auml;gere) und in die Alpen.</kurzbeschrieb>
<land>CH</land>
<lat>47.437977</lat>
<lon>8.734812</lon>
<name>First</name>
<ort>Illnau-Effretikon</ort>
<plz>8307</plz>
<strasse>Billikerstrasse 3</strasse>
</e>
<e>
<kanton>SO</kanton>
<kurzbeschrieb>Trimbacher Hausberg, dem Hauenstein, etwa 300Meter unterhalb des h&amp;ouml;chsten Punktes. Fast beim h&amp;ouml;chsten Punkt steht der Swisscom-Sendemasten, welcher eine offene Betongarage zum Schutz f&amp;uuml;r Personen und bis zu maximal zwei Autos bietet.</kurzbeschrieb>
<land>CH</land>
<lat>47.382732</lat>
<lon>7.898450</lon>
<name>Froburg</name>
<ort>Trimbach</ort>
<plz>4632</plz>
<strasse>Froburgstrasse 268</strasse>
</e>
<e>
<kanton>VD</kanton>
<kurzbeschrieb>Sch&amp;ouml;ner Blick auf den Neuenburgersee, das Berner Oberland, die Freiburger Voralpen und den Franz&amp;ouml;sischen Alpen bzw. dem Genferseebecken. Der Ort ist von der Autobahnausfahrt St. Aubin innerhalb von 10 min erreichbar.</kurzbeschrieb>
<land>CH</land>
<lat>46.892574</lat>
<lon>6.729898</lon>
<name>Fromagerie Provence</name>
<ort>Provence</ort>
<plz>1428</plz>
<strasse>Route de la Montagne</strasse>
</e>
<e>
<kanton>AG</kanton>
<kurzbeschrieb>Der Ausgangs- und Startpunkt in der Region Z&amp;uuml;rich-Aargau schlechthin. Nicht zuoberst sondern etwas mehr auf halber Strecke bietet sich ein wundersch&amp;ouml;ner Ausblick Richtung Z&amp;uuml;rich, Zentralschweiz, Mittelland und etwas Jura- und Ostschweiz.</kurzbeschrieb>
<land>CH</land>
<lat>47.376830</lat>
<lon>8.364694</lon>
<name>Hasenberg</name>
<ort>Widen</ort>
<plz>8967</plz>
<strasse>Hasenbergstrasse 61</strasse>
</e>
<e>
<kanton>AR</kanton>
<kurzbeschrieb>Der Platz liegt in Herisau und ist bei einem Trigonometrischen Messpunkt. Es ist jedoch zu beachten, dass der Platz extrem exponiert liegt und pr&amp;auml;destiniert ist f&amp;uuml;r Blitzeinschl&amp;auml;ge. Um zum Punkt zu gelangen, muss man ca. 180m von der Strasse &amp;uuml;ber die Wiese (Wanderweg) gehen.</kurzbeschrieb>
<land>CH</land>
<lat>47.384959</lat>
<lon>9.295844</lon>
<name>Herisau</name>
<ort>Herisau</ort>
<plz>9100</plz>
<strasse>Lutzenland 455</strasse>
</e>
<e>
<kanton>ZH</kanton>
<kurzbeschrieb>Der Herrenberg ist nah dem Hasenberg und etwas tiefer, jedoch bietet er eine gute Sicht Richtung Zentralschweiz, Ostschweiz und der Stadt Z&amp;uuml;rich. Der Uetliberg in seiner ganzen Pracht bietet sich f&amp;uuml;r Blitzfotos an, da in seinen Fernsehturm fast jedes Gewitter einen liegen l&amp;auml;sst (Blitzeinschlag in den Sendeturm).</kurzbeschrieb>
<land>CH</land>
<lat>47.381139</lat>
<lon>8.381029</lon>
<name>Herrenberg</name>
<ort>Bergdietikon</ort>
<plz>8962</plz>
<strasse>Herrenberg 233</strasse>
</e>
<e>
<kanton>ZH</kanton>
<kurzbeschrieb>Der Spotterplatz oberhalb von Hirze-Dorf, auch Hirzelh&amp;ouml;chi genannt ist in wenigen Minuten von Zug, Z&amp;uuml;rich und Horgen erreichbar. Sehr gute Fernsicht in alle Richtungen.</kurzbeschrieb>
<land>CH</land>
<lat>47.221895</lat>
<lon>8.599890</lon>
<name>Hirzel Farenweid</name>
<ort>Hirzel</ort>
<plz>8816</plz>
<strasse>Farenweidstrasse</strasse>
</e>
<e>
<kanton>FR</kanton>
<kurzbeschrieb>Dieser Ort eignet sich, um Gewitterzellen auf dem Neuenburgersee zu verfolgern. Sch&amp;ouml;ner Aussichtspunkt, von wo man fast den ganzen Neuenburgersee sieht.</kurzbeschrieb>
<land>CH</land>
<lat>46.959122</lat>
<lon>7.061881</lon>
<name>Joressens</name>
<ort>Haut-Vully</ort>
<plz>1789</plz>
<strasse>Route de la Poya 2</strasse>
</e>
<e>
<kanton>LU</kanton>
<kurzbeschrieb>Die Location befindet sich 3 Minuten von der Autobahneinfahrt Sempach entfernt, und ist damit sehr gut gelegen um von dort aus ein Chasing zu machen. Es gibt ein Restaurant mit einem grossen Parkplatz.</kurzbeschrieb>
<land>CH</land>
<lat>47.146156</lat>
<lon>8.212194</lon>
<name>Kapelle Sempach</name>
<ort>Sempach</ort>
<plz>6204</plz>
<strasse>Schlachthof 277</strasse>
</e>
<e>
<kanton>ZH</kanton>
<kurzbeschrieb><![CDATA[Der Platz bietet eine freie Sicht auf den Z&uuml;richsee von Nord &uuml;ber Ost nach S&uuml;ds&uuml;dost. Dieser ist mit dem Auto gut zug&auml;nglich, bietet aber daf&uuml; keinen Schutz f&uuml;r das Auto.]]></kurzbeschrieb>
<land>CH</land>
<lat>47.318775</lat>
<lon>8.546173</lon>
<name>Kilchberg</name>
<ort>Kilchberg</ort>
<plz>8802</plz>
<strasse>Alte Landstrasse 168</strasse>
</e>
<e>
<kanton>SG</kanton>
<kurzbeschrieb>Sehr sch&amp;ouml;ne und weite Sicht &amp;uuml;ber den Bodensee in Nord&amp;ouml;stliche Richtung. Schnell an anderen Spotterpl&amp;auml;tze der Region angeschlossen.</kurzbeschrieb>
<land>CH</land>
<lat>47.458070</lat>
<lon>9.492897</lon>
<name>Koblen Hasenhus</name>
<ort>Rorschacherberg</ort>
<plz>9404</plz>
<strasse>Hasenhussttasse 2-4</strasse>
</e>
<e>
<kanton>AG</kanton>
<kurzbeschrieb>Gute Sicht nach S&amp;uuml;den und Nord-Westen.</kurzbeschrieb>
<land>CH</land>
<lat>47.343605</lat>
<lon>8.380246</lon>
<name>Lieli/Berikon</name>
<ort>Berikon</ort>
<plz>8965</plz>
<strasse>S&amp;auml;delstrasse</strasse>
</e>
<e>
<kanton>AG</kanton>
<kurzbeschrieb>Ein kleiner H&amp;uuml;gel zwischen Muri und Hitzkirch bietet Sicht Richtung Hallwil, Affoltern und Luzern. Ein paar Minuten weiter oben auf dem H&amp;auml;mikerberg bietet sich eine freie Sicht Richtung Zentralschweiz und Jura.</kurzbeschrieb>
<land>CH</land>
<lat>47.241738</lat>
<lon>8.320979</lon>
<name>Lindenberg</name>
<ort>Beinwil</ort>
<plz>5637</plz>
<strasse>Hauptstrasse</strasse>
</e>
<e>
<kanton>BE</kanton>
<kurzbeschrieb>Aussicht auf Feld von NW (Jura) &amp;uuml;ber W (Romandie), S (Berner Alpen), bis E (Oberemmental) - nur durch Ulmizberg im Norden eingeschr&amp;auml;nkt). Errichbarkeit mit Auto von K&amp;uuml;hlewil-Egg.</kurzbeschrieb>
<land>CH</land>
<lat>46.883775</lat>
<lon>7.428925</lon>
<name>Lisiberg</name>
<ort>K&amp;ouml;niz</ort>
<plz>3144</plz>
<strasse>Auf der H&amp;ouml;he</strasse>
</e>
<e>
<kanton>FR</kanton>
<kurzbeschrieb>Ein kleiner aber feiner Berg in der Region Frubourg zwischen dem Neuenbuerger- und Murtensee. Auf dem Kulminationspunkt sind viele Parkpl&amp;auml;tze vorhanden. Es gibt keinen Unterstand. Gewitter kann im Auto betrachtet werden.</kurzbeschrieb>
<land>CH</land>
<lat>46.963063</lat>
<lon>7.094874</lon>
<name>Mont Vully</name>
<ort>Bas-Vully</ort>
<plz>1786</plz>
<strasse>Route Militaire</strasse>
</e>
<e>
<kanton>-</kanton>
<kurzbeschrieb>Dieser Spotterplatz liegt im Grenzgebiet auf deutscher Seite. Aufgrund des Verkehrs am Besten in Laufenburg &amp;uuml;ber den Zoll. Und dann &amp;uuml;ber Laufenburg oder Murg hoch Richtung Oberhof/H&amp;auml;nner. Es gibt keinen Schutz (direkt) vor Blitz und Hagelschlag.</kurzbeschrieb>
<land>DE</land>
<lat>47.580410</lat>
<lon>8.029535</lon>
<name>Oberhof (DE)</name>
<ort>Murg</ort>
<plz>79730</plz>
<strasse>Thimosstrasse 7</strasse>
</e>
<e>
<kanton>BE</kanton>
<kurzbeschrieb>Aussichtsplattform auf Reservoir - uneingeschränkte Rundsicht!
Achtung: Blitzgefahr gross wegen Fahnenmast - jeweils vor nahen
Entladungen (&lt; 5km) beginnt der Mast wegen Spannungsaufbau zu surren.</kurzbeschrieb>
<land>CH</land>
<lat>46.857396</lat>
<lon>7.332392</lon>
<name>Obermettlen</name>
<ort>Ueberstorf</ort>
<plz>3182</plz>
<strasse>H&amp;ouml;hi 2</strasse>
</e>
<e>
<kanton>SO</kanton>
<kurzbeschrieb>Freier Blick nach Westen bis Norden (und sogar etwas Nord-Osten). Die
Gewitter in Basel und Oberrein sind von dort schon gut zu sehen. Es hat keinen speziellen Haltebereich, aber die Strasse ist wenig befahren und alle paar hundert Meter gibt es einen abgehenden Feldweg, wo man das Auto gut hinstellen kann.</kurzbeschrieb>
<land>CH</land>
<lat>47.425884</lat>
<lon>7.917835</lon>
<name>Oltingen/Zeglingen</name>
<ort>Oltingen</ort>
<plz>4494</plz>
<strasse>Ried</strasse>
</e>
<e>
<kanton>AG</kanton>
<kurzbeschrieb>Der Petersberg, eigentlich ein kleiner und feiner H&amp;uuml;gel im l&amp;auml;ndlichen Kanton Aargau bietet gute Rundumsicht nach Deutschland, in das Juras&amp;uuml;d- und Nordfussgebiet sowie Richtung Kloten und Ostschweiz.</kurzbeschrieb>
<land>CH</land>
<lat>47.557111</lat>
<lon>8.310205</lon>
<name>Petersberg</name>
<ort>Baldingen</ort>
<plz>5333</plz>
<strasse>Eichhof 80</strasse>
</e>
<e>
<kanton>ZH</kanton>
<kurzbeschrieb>Der &amp;ouml;stliche Teil von Regensberg bietet eine freie Sicht Richtung Zentral- und Ostschweiz, aber auch nach Deutschland. Komplette Freisicht nach Kloten, B&amp;uuml;lach, Schaffhausen, Henggart, Winterthur, St.Gallen.</kurzbeschrieb>
<land>CH</land>
<lat>47.477971</lat>
<lon>8.440247</lon>
<name>Regensberg Ost</name>
<ort>Regensberg</ort>
<plz>8158</plz>
<strasse>Vorbuschstrasse</strasse>
</e>
<e>
<kanton>SO</kanton>
<kurzbeschrieb>Sich einen grossen &amp;Uuml;berblick auf die herannahenden oder entstehenden Gewitterzellen oder Unwetter kann man sich auf dem Rumisberg bei Farnen verschaffen. Eine weite fast freie Sicht &amp;uuml;ber die Jurakette und Westschweiz bis nach Frankreich oder durch das gesamte Mittelland, die Zentralschweiz bis hin ins Urnerland oder gar Tessin.</kurzbeschrieb>
<land>CH</land>
<lat>47.268070</lat>
<lon>7.619189</lon>
<name>Rumisberg-Farnen</name>
<ort>Farnen</ort>
<plz>4539</plz>
<strasse>Schulacherweg</strasse>
</e>
<e>
<kanton>AG</kanton>
<kurzbeschrieb>Die Location befindet sich auf einer Anh&amp;ouml;he mit guter Sicht Richtung Voralpen und Limmattal. Sehr exponierte Lage ohne M&amp;ouml;glichkeit sich unter zu stellen. Grosse Gefahr durch Blitzschlag.</kurzbeschrieb>
<land>CH</land>
<lat>47.312646</lat>
<lon>8.260104</lon>
<name>Sarmenstorf</name>
<ort>Sarmenstorf</ort>
<plz>5614</plz>
<strasse>Neue Niesenbergstrasse 611</strasse>
</e>
<e>
<kanton>SO</kanton>
<kurzbeschrieb>Der Platz liegt auf der Juras&amp;uuml;dseite und man hat einen herrlichen Blick bis zu den Alpen Richtung S&amp;uuml;d-Osten und S&amp;uuml;d. Zu erreichen ist der Spot von Aarau aus Richtung Erlinsbach - St&amp;uuml;sslingen - Rohr (SO) - Schafmatt in ca. 15-20 Minuten.</kurzbeschrieb>
<land>CH</land>
<lat>47.416868</lat>
<lon>7.955947</lon>
<name>Schafmatt SO</name>
<ort>Rohr</ort>
<plz>4494</plz>
<strasse>Schafmattstrasse</strasse>
</e>
<e>
<kanton>FR</kanton>
<kurzbeschrieb>Dieser Platz liegt in erh&amp;ouml;hter Lage und es gibt keinen Unterstand. Beim Kulminationspunkt hat es einen Baum.</kurzbeschrieb>
<land>CH</land>
<lat>46.983731</lat>
<lon>7.215233</lon>
<name>Sonnenberg</name>
<ort>Kerzers</ort>
<plz>3210</plz>
<strasse>Niederrietsdrasse</strasse>
</e>
<e>
<kanton>BE</kanton>
<kurzbeschrieb>Aussicht auf den Neuenburgersee. Der Standort liegt in erh&amp;ouml;hter Lage, es gibt keinen Unterstand. Es f&amp;uuml;hrt eine Strasse vom St. Jodelweg zur Erlacherstrasse, die praktisch nie befahren wird. Das Auto kann dort abgestellt werden, so dass man auch im Auto einen guten Blick auf den Neuenburgersee hat.</kurzbeschrieb>
<land>CH</land>
<lat>47.013448</lat>
<lon>7.098101</lon>
<name>St. Jodel</name>
<ort>Ins</ort>
<plz>3232</plz>
<strasse>Sankt Jodelweg 56</strasse>
</e>
<e>
<kanton>LU</kanton>
<kurzbeschrieb>Der eigentliche Spotterplatz welcher grossr&amp;auml;mig als St.Urban benannt wird. Er liegt l&amp;auml;ndlich zwischen St.Urban und Roggliswil auf einer Anh&amp;ouml;he, die nur &amp;uuml;ber einen Feldweg zu erreichen ist.</kurzbeschrieb>
<land>CH</land>
<lat>47.210652</lat>
<lon>7.878790</lon>
<name>St. Urban Ost</name>
<ort>Roggliswil</ort>
<plz>6265</plz>
<strasse>Netzelen 59</strasse>
</e>
<e>
<kanton>LU</kanton>
<kurzbeschrieb>St.Urban West ist lediglich ein paar hundert Meter vom Spotterplatz St.Urban Ost entfernt und liegt etwa 30Meter tiefer, jedoch bietet sich dieser mit Sicht Richtung Osten (Aargau, ZH-Winterthur, St.Gallen) an.</kurzbeschrieb>
<land>CH</land>
<lat>47.210491</lat>
<lon>7.874064</lon>
<name>St.Urban West</name>
<ort>Roggliswil</ort>
<plz>6265</plz>
<strasse>Netzelen</strasse>
</e>
<e>
<kanton>SG</kanton>
<kurzbeschrieb>Gute Sicht nach S&amp;uuml;den und Nord-Westen. Ideal f&amp;uuml;r Zellen die von S&amp;uuml;dwesten her (z.B. Sempach oder Berom&amp;uuml;nster), sich nach Nord-Osten verlagern.</kurzbeschrieb>
<land>CH</land>
<lat>47.467147</lat>
<lon>9.482365</lon>
<name>Sulzberg</name>
<ort>Rorschacherberg</ort>
<plz>9404</plz>
<strasse>Sulzbergstrasse 20A</strasse>
</e>
<e>
<kanton>BE</kanton>
<kurzbeschrieb>Utenwil liegt im Sandwich zwischen Seeland (Kerzers/Murten) und Voralpen (Schwarzsee/Schwarzenburg). Man ist schnell vor Ort und dieser eignet sich genial f&amp;uuml;r Westwindgewitter.</kurzbeschrieb>
<land>CH</land>
<lat>46.873979</lat>
<lon>7.246715</lon>
<name>Utenwil</name>
<ort>B&amp;ouml;singen</ort>
<plz>3178</plz>
<strasse>Flurweg 4</strasse>
</e>
<e>
<kanton>ZG</kanton>
<kurzbeschrieb>Auf dem Zugerberg gibt es nicht gerade viel optimaler Platz um die Leidenschaft auszuleben. Doch ein kleines aber feines &amp;Ouml;rtchen wurde mit Absprache eines Bauern gefunden. Maximal drei Autos d&amp;uuml;rfen auf dem Grundst&amp;uuml;ck parkieren.</kurzbeschrieb>
<land>CH</land>
<lat>47.151106</lat>
<lon>8.537774</lon>
<name>Zugerberg</name>
<ort>Zug</ort>
<plz>6300</plz>
<strasse>Blasenbergstrasse</strasse>
</e>
</e>
</Response>
PS: Verbindungsfehler zur Datei besteht immer noch, kann ich die Netzwerkverbindung im Emulator emulieren? Oder muss ich das erst auf meinem Handy testen? ;) Naja, geht derweil noch nicht wegen der Listview. Nach 5 vershiedenen Varianten komme ich noch immer nicht zur Lösung des Problems.

Ich hab mir überlegt ob ich eventuell diese json-Abfrage in die FragmentListActivity Klasse schieben muss/soll? Diese befindet sich nämlich aktuell in der MainActivity.
 
Zuletzt bearbeitet:
Xilent

Xilent

Fortgeschrittenes Mitglied
Das sieht doch super aus..

Neben dem Response Fenster is so eine kleine Leiste --> Da mal auf JSON stellen, so geht er von XML aus.

Würde ich nicht verschieben. Und ja es kann sein, dass der Emulator keine Internetverbindung herstellt.

Wegen der ListView versuche mal:
Code:
 mList= getListView();
 
Zuletzt bearbeitet:
W

WolfCH

Ambitioniertes Mitglied
Ok, der regaiert jetzt grad gar nicht mehr. Weder im XML noch in JSON.. das Programm stürzt ab. :)

Ich versuch mich mal weiter im Bezug auf das ListView Problem.. vielleicht krieg ich es noch gelöst bevor Du drauf kommst :)
 
Xilent

Xilent

Fortgeschrittenes Mitglied
Hab den letzten Post editiert kannst ja mal versuchen
 
W

WolfCH

Ambitioniertes Mitglied
Xilent schrieb:
Hab den letzten Post editiert kannst ja mal versuchen
Das hatte ich auch schon versucht, leider ohne Erfolgt:
04-21 06:54:47.034 1109-1109/com.stormchase.ssv_ufsig.ch W/dalvikvm threadid=1: thread exiting with uncaught exception (group=0xb1afdba8)
04-21 06:54:47.044 1109-1109/com.stormchase.ssv_ufsig.ch E/AndroidRuntime FATAL EXCEPTION: main
Process: com.stormchase.ssv_ufsig.ch, PID: 1109
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.stormchase.ssv_ufsig.ch/com.stormchase.ssv_ufsig.ch.MainActivity}: java.lang.RuntimeException: Your content must have a ListView whose id attribute is 'android.R.id.list'
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2195)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245)
at android.app.ActivityThread.access$800(ActivityThread.java:135)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5017)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.RuntimeException: Your content must have a ListView whose id attribute is 'android.R.id.list'
at android.app.ListActivity.onContentChanged(ListActivity.java:243)
at com.stormchase.ssv_ufsig.ch.FragmentListActivity.onContentChanged(FragmentListActivity.java:231)
at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:293)
at android.app.Activity.setContentView(Activity.java:1929)
at com.stormchase.ssv_ufsig.ch.MainActivity.onCreate(MainActivity.java:151)
at android.app.Activity.performCreate(Activity.java:5231)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2159)
************at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245)
************at android.app.ActivityThread.access$800(ActivityThread.java:135)
************at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
************at android.os.Handler.dispatchMessage(Handler.java:102)
************at android.os.Looper.loop(Looper.java:136)
************at android.app.ActivityThread.main(ActivityThread.java:5017)
************at java.lang.reflect.Method.invokeNative(Native Method)
************at java.lang.reflect.Method.invoke(Method.java:515)
************at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
************at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
************at dalvik.system.NativeStart.main(Native Method)
 
W

WolfCH

Ambitioniertes Mitglied
Jo, der arbeitet aber mit ListActivity, und das kann ich nicht verwenden, denn verwende ich das, dann hab ich das Problem dass die ganze FragmentActivity mit dem NavigationDrawer etc nicht mehr funktioniert. Aber danke, ich werde mal durchlesen vielleicht kriegt ich sonst ne Lösung hi ;)
 
Ähnliche Themen - ListView ohne ListActivity - Fehler you must have... Antworten Datum
9