MySQl in ListView ausgeben

  • 1 Antworten
  • Neuester Beitrag
Diskutiere MySQl in ListView ausgeben im Android App Entwicklung im Bereich Betriebssysteme & Apps.
V

Viktor R

Neues Mitglied
Hallo zusammen,

ich habe schon einige Beispiele zum Titel gefunden, dennoch klappt es bei mir nicht. Nach dem ich die Activity starte, erhalte ich nur eine Textview, jedoch nicht ListView. Ich habe das php file im Browser geöffent, die Daten werden von der DB abgefragt. Ich vermute, dass es an der Übergabe an das JSON Objekt liegen kann, bin mir aber nicht sicher.
Was ich gemacht habe:

Android Manifest angepasst (Uses Permission...)
Activity implementiert (Wäre ListActivity sinnvoller?)
php script
DB Treiber "mysql-connector-java-5.1.18-bin.jar" zum Projekt hinzugefügt
main.xml mit einer Text und einer ListView erstellt

Anbei poste ich mein Code:


Code:
public class DB_AbfrageActivity extends Activity {
    InputStream is;
    ArrayList<String> results=new ArrayList<String>();
    JSONObject json_data;
    ArrayList<NameValuePair> nameValuePairs=new ArrayList<NameValuePair>();
    
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);       
    }
    
    public void getData(){
        String result="";
        
    try{
            HttpClient httpclient=new DefaultHttpClient();
            HttpPost httppost=new HttpPost("http://localhost/mysql.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="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());
        }
        
        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("artikel")+" "+json_data.get("menge")+" "+json_data.get("bez")+" "+json_data.get("zeit"));
            }
            fillList();
        }catch (JSONException e){
            Log.e("log_tag", "Error parsing data "+e.toString());
        }
    }
    
    public void fillList(){
        ListAdapter adapter=new ArrayAdapter(this,android.R.layout.simple_list_item_1, results);
        ListView list=(ListView)findViewById(R.id.listView1);
        list.setAdapter(adapter);
    }
    
}
gruß

Viktor
 
M

Maddi

Ambitioniertes Mitglied
Versuchs mal so:
Code:
 String result = EntityUtils.toString(entity, HTTP.UTF_8);

    // parse json data
    try {
        JSONArray jArray = new JSONArray(result);                           
        for (int i = 0; i < jArray.length(); i++) {
        JSONObject json_data = jArray.getJSONObject(i);
....
oder einfach
Code:
...
sb.deleteCharAt(0);
String result = sb.toString();
result.trim();
        }catch (Exception e){             Log.e("log_tag","Error converting result "+e.toString());         }
...