KL7000F
Erfahrenes Mitglied
- 56
Hallo,
ich grüble bereits einige Zeit und steh derzeit am Schlauch. Ggf. kann mir jemand den entsprechenden Hinweis geben.
Ich lese über die entwickelte App Daten aus einer MySQL-Datenbank auf meinem Server aus. Hierzu dient eine PHP-Datei als "Zwischenstück". Das ganze basiert auf folgendem Tutorial: Android App mit einer MySQL Datenbank verbinden (16.01.2016)
Die Problematik: Ich erhalte zwar meine Daten in der "ActivityDataSource", aber hier stehen sie als String wie in etwa:
Das Ganze möchte ich nun in eine ListView eintragen. Es scheitert bereits, dass die Daten (wie im Tutorial in ein TextView) in einen String in "MainActivity" gelangen.
ActivityDataSource.java:
MainActivity.java:
Wer kann mir hierbei helfen bzw. auch vielleicht einen Tipp geben, wie ich die in eine ListView bekomme?
Vielen Dank!
ich grüble bereits einige Zeit und steh derzeit am Schlauch. Ggf. kann mir jemand den entsprechenden Hinweis geben.
Ich lese über die entwickelte App Daten aus einer MySQL-Datenbank auf meinem Server aus. Hierzu dient eine PHP-Datei als "Zwischenstück". Das ganze basiert auf folgendem Tutorial: Android App mit einer MySQL Datenbank verbinden (16.01.2016)
Die Problematik: Ich erhalte zwar meine Daten in der "ActivityDataSource", aber hier stehen sie als String wie in etwa:
#Id|Benutzername|blub|blub#Id|Benutzername|blub|blub#...
Das Ganze möchte ich nun in eine ListView eintragen. Es scheitert bereits, dass die Daten (wie im Tutorial in ein TextView) in einen String in "MainActivity" gelangen.
ActivityDataSource.java:
Code:
package de.ebn.Datasource;
import android.os.AsyncTask;
import android.util.Log;
import android.widget.TextView;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.URL;
import java.net.URLConnection;
import java.net.URLEncoder;
import de.ebn.MainActivity;
public class ActivityDataSource extends AsyncTask<String, Void, String> {
public String RuckgabeString = "";
public ActivityDataSource(String RuckgabeString) {
this.RuckgabeString = RuckgabeString;
}
@Override
protected String doInBackground(String... params) {
try {
//openConnection();
StringBuffer dataBuffer = new StringBuffer();
dataBuffer.append(URLEncoder.encode("authkey", "UTF-8"));
dataBuffer.append(POST_PARAM_KEYVALUE_SEPARATOR);
dataBuffer.append(URLEncoder.encode(AUTHKEY, "UTF-8"));
dataBuffer.append(POST_PARAM_SEPARATOR);
dataBuffer.append(URLEncoder.encode("method", "UTF-8"));
dataBuffer.append(POST_PARAM_KEYVALUE_SEPARATOR);
dataBuffer.append(URLEncoder.encode(DESTINATION_METHOD, "UTF-8"));
//Adresse der PHP Schnittstelle für die Verbindung zur MySQL Datenbank
URL url = new URL("http://url.de/gateway.php");
conn = url.openConnection();
conn.setDoOutput(true);
OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream());
wr.write(dataBuffer.toString());
wr.flush();
return readResult();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
/**
* Ließt das Ergebnis aus der geöffneten Verbindung.
* @return liefert ein String mit dem gelesenen Werten.
* @throws IOException
*/
private String readResult()throws IOException{
String result = null;
//Lesen der Rückgabewerte vom Server
BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));
StringBuilder sb = new StringBuilder();
String line = null;
//Solange Daten bereitstehen werden diese gelesen.
while ((line = reader.readLine()) != null) {
sb.append(line);
}
return sb.toString();
}
@Override
protected void onPostExecute(String result) {
if(!isBlank(result)) {
this.RuckgabeString = result;
}
}
private boolean isBlank(String value){
return value == null || value.trim().isEmpty();
}
}
MainActivity.java:
Code:
package de.ebn;
import android.os.Bundle;
//import android.support.design.widget.FloatingActionButton;
//import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
//import android.support.v7.widget.Toolbar;
import android.util.Log;
import android.view.View;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.AdapterView;
import android.widget.Button;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
import de.ebn.Datasource.ActivityDataSource;
public class MainActivity extends AppCompatActivity {
int[] images = new int[20];
String[] benutzername = new String[20];
String[] status = new String[20];
ListView lView;
ListAdapter lAdapter;
public String RuckgabeString = "";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
lView = (ListView) findViewById(R.id.androidList);
lAdapter = new ListAdapter(MainActivity.this, benutzername, status, images);
lView.setAdapter(lAdapter);
lView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
Toast.makeText(MainActivity.this, benutzername[i]+" "+status[i], Toast.LENGTH_SHORT).show();
new ActivityDataSource(RuckgabeString,"Read").execute("");
//Wenn ich hier den RuckgabeString auswerte, ist nichts drin???
}
});
}
public String TimeStampNow() {
Long tsLong = System.currentTimeMillis()/1000;
return tsLong.toString();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if (id == R.id.action_settings) { return true;}
return super.onOptionsItemSelected(item);
}
}
Wer kann mir hierbei helfen bzw. auch vielleicht einen Tipp geben, wie ich die in eine ListView bekomme?
Vielen Dank!