Заполните Android ListView элементами из MySQL с помощью SpinnerAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Заполните Android ListView элементами из MySQL с помощью Spinner

Сообщение Anonymous »

Я новичок в программировании Android, и проблема, указанная в заголовке, меня беспокоит.

У меня есть таблица Groceries в базе данных MySQL на моем локальном хосте:

Код: Выделить всё

id----name---------type
1     apple        fruit
2     banana       fruit
3     lettuce      vegetable
4     apricot      fruit
5     cauliflower  vegetable
В моем приложении для Android также есть Spinner и ListView. В Spinner есть записи массива строк с элементами, фруктами и овощами.

Я хочу, чтобы, когда пользователь выбирает тип из Spinner как фрукты или овощи, ListView заполнялся именами соответствующего типа из MySQL.

Вот что я сделал до сих пор.

Код: Выделить всё

MainActivity
класс:

Код: Выделить всё

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

Код: Выделить всё

BackgroundWorker
класс:

Код: Выделить всё

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;
}
}
Вот мои продукты.php:

Код: Выделить всё


Подробнее здесь: [url]https://stackoverflow.com/questions/38957926/populate-android-listview-with-items-from-mysql-using-spinner[/url]
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»