Füllen Sie Android ListView mithilfe von Spinner mit Elementen aus MySQLAndroid

Forum für diejenigen, die für Android programmieren
Anonymous
 Füllen Sie Android ListView mithilfe von Spinner mit Elementen aus MySQL

Post by Anonymous »

Ich bin ein Android-Programmierneuling und das im Titel genannte Problem hat mich beunruhigt.

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 habe auch einen Spinner und eine ListView in meiner Android-Anwendung. Der Spinner hat Einträge eines String-Arrays mit den Elementen Obst und Gemüse.

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

MainActivity
Klasse:

Code: 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

BackgroundWorker
Klasse:

Code: 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;
}
}
Hier ist meine groceries.php:

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post