ListActivity auf ein bestimmes Layout ausgeben

  • Antworten:10
Daniel H.
  • Forum-Beiträge: 17

16.04.2014, 20:11:48 via Website

Hey Leute,

Da ich nach ewigem Probieren endlich die Verbindung zum Webserver hergestellt habe, habe ich nun das nächste Problem. Der JSON array wird eben in ein ListView ausgegeben, in einem neuen 'unformatieren' Layout. Ich will eben die Daten auf einem bearbeitbaren Layout haben, also mit dem spezifischen Layout verbinden (in diesem Fal le activitymain)

Hätte es schon mit 'setContentView' versucht, dabei stürzte die App jedoch ab.

Hat da jemand eine Idee?

Grüße, Daniel

PS: Code ist in der ersten Antwort, da das verdammte Forum mich den Code hier nicht posten lässt

— geändert am 16.04.2014, 20:17:30

Antworten
Daniel H.
  • Forum-Beiträge: 17

16.04.2014, 20:15:56 via Website

import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; import java.util.ArrayList; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.NameValuePair; import org.apache.http.client.HttpClient; import org.apache.http.client.entity.UrlEncodedFormEntity; import org.apache.http.client.methods.HttpPost; import org.apache.http.impl.client.DefaultHttpClient; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import android.os.Bundle; import android.app.ListActivity; import android.util.Log; import android.view.Menu; import android.widget.ArrayAdapter;

    public class MainActivity extends ListActivity {


        InputStream is;
        ArrayList<String> results =new ArrayList<String>();
        JSONObject json_data;






        @Override
        protected void onCreate(Bundle savedInstanceState) {
             super.onCreate(savedInstanceState);
             getData();

        }





        private void getData() {

            String result = "";
                ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();


                try{
                HttpClient httpclient = new DefaultHttpClient();
                HttpPost httppost = new HttpPost("h ttp:/ /patrickhartl.lima-city. de/eva1 .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("Messdaten") + " "+ json_data.get("Wert") + " " + json_data.get("Einheit"));
                } 
                    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));
        }





        @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;
        }


    }

— geändert am 16.04.2014, 20:19:25

Antworten
Daniel H.
  • Forum-Beiträge: 17

18.04.2014, 11:28:17 via Website

push

mfg

Antworten
Andy N.
  • Forum-Beiträge: 22.375

18.04.2014, 12:27:54 via Website

Hallo Daniel,

Bitte nicht pushen, ich bin mir sicher, dass sich hier jemand melden wird, sobald er/sie eine Antwort für dich hat

;)

Viele Grüße,
Andy


OnePlus 3 (Resurrection Remix 5.8.2)
LG G Watch

Regeln | unsere Mods & Admins

Daniel H.

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

18.04.2014, 16:14:56 via Website

Machst du denn kein setContent view auf dein Mainlayout? Erst dein normales Layout mit der list view per serContentView() serten und dann kannst du die ListView befüllen

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
Daniel H.
  • Forum-Beiträge: 17

18.04.2014, 16:35:02 via Website

Hätte ich eben schon oftmals versucht, aber setCOntentView bringt die ListAcitvity zum Abstürzen

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

18.04.2014, 16:52:22 via Website

Wieso überhaupt list Activity? imm ne normale Activity dann kannst du auch setContentView benutzen

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
Daniel H.
  • Forum-Beiträge: 17

18.04.2014, 17:05:42 via Website

Das war eh nur eine Testapp, brauchen tu ichs für ein Fragment.

Darum suche ich eben die beste Möglichkeit die Daten das Layout des Fragments auszugeben. Bzw. was auch super wäre, die Daten Variablen zuzuweisen.

mfg

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

18.04.2014, 17:13:08 via Website

Kannst du ja alles maachen aber eine Fragment Activity ist nichts anderes als eine niormale nur Für Fragments. Eine ListActivity passt nicht

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
Daniel H.
  • Forum-Beiträge: 17

18.04.2014, 17:16:47 via Website

Kannst du mir dann zufällig sagen wie ich das am besten mache? Hab mit JSON wenig Erfahrung

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

18.04.2014, 19:43:49 via Website

Das hat mit Json garnix zu tun Oben steht:

 public class MainActivity extends ListActivity {

das ListActivity musst du durch Activity ersetzen und dann deine ListView per findView by id feinden oder den Arrayadapter benutzen

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten