Ich habe eine Lebensmitteltabelle in einer MySQL-Datenbank in meinem lokalen Host:
Code: Select all
id----name---------type
1 apple fruit
2 banana fruit
3 lettuce vegetable
4 apricot fruit
5 cauliflower vegetable
Ich möchte, dass, wenn der Benutzer den Typ aus dem Spinner entweder als Obst oder Gemüse auswählt, die ListView mit den Namen des entsprechenden Typs aus MySQL gefüllt wird.
Hier ist, was ich bisher gemacht habe.
Code: Select all
MainActivityCode: Select all
package com.example.mine.application;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Spinner;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends AppCompatActivity {
public Spinner groceryTypes;
public ListView groceries;
public static List arrayGroceries;
ArrayAdapter adapterGroceries;
@Override
protected void onCreate(Bundle savedInstanceState) {
groceryTypes = (Spinner) findViewById(R.id.groceryTypes_spinner);
groceries = (ListView) findViewById(R.id.groceries_listView);
arrayGroceries = new ArrayList();
adapterGroceries = new ArrayAdapter(this, android.R.layout.simple_list_item_1, arrayGroceries);
groceries.setAdapter(adapterGroceries);
groceryTypes.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView parent, View view, int position, long id) {
BackgroundWorker backgroundWorker = new BackgroundWorker(MainActivity.this);
backgroundWorker.execute(groceryTypes.getItemAtPosition(position).toString());
adapterGroceries.notifyDataSetChanged();
}
@Override
public void onNothingSelected(AdapterView parent) {
//TODO Auto-generated method stub
}
});
}
Code: Select all
BackgroundWorkerCode: Select all
package com.example.mine.application;
import android.content.Context;
import android.os.AsyncTask;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
public class BackgroundWorker extends AsyncTask {
Context context;
BackgroundWorker(Context ctx){
context = ctx;
}
@Override
protected String doInBackground(String... params) {
String groceries_URL = "http://10.0.2.2/groceries.php";
String groceryType = params[0];
try {
URL url = new URL(groceries_URL);
HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();
httpURLConnection.setRequestMethod("POST");
httpURLConnection.setDoOutput(true);
httpURLConnection.setDoInput(true);
OutputStream outputStream = httpURLConnection.getOutputStream();
BufferedWriter bufferedWriter = new BufferedWriter
(new OutputStreamWriter(outputStream, "UTF-8"));
String post_data = URLEncoder.encode("grocery_type", "UTF-8")+"="+URLEncoder.encode(groceryType, "UTF-8");
bufferedWriter.write(post_data);
bufferedWriter.flush();
bufferedWriter.close();
outputStream.close();
InputStream inputStream = httpURLConnection.getInputStream();
BufferedReader bufferedReader = new BufferedReader
(new InputStreamReader(inputStream, "iso-8859-1"));
MainActivity.arrayGroceries.clear();
String line;
while ((line = bufferedReader.readLine()) != null) {
MainActivity.arrayGroceries.add(line);
}
bufferedReader.close();
inputStream.close();
httpURLConnection.disconnect();
return null;
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
}
Code: Select all
Mobile version