Zweiten Spinner hinzufügen

H

haner

Ambitioniertes Mitglied
Threadstarter
Hallo,
derzeit befindet sich ein Spinner auf meiner Seite, dessen Items von einer mysql-Datenbank abgerufen werden. Das funktioniert bereits.
Nun möchte ich noch einen zweiten Spinner auf der Seite integrieren, dessen Items aus einer weiteren Tabelle der mysql-Datenbank abgerufen werden.
Leider passiert beim Anklicken des zweiten Spinners nichts. Bin Anfänger und könnte mir vorstellen, dass das mit den 2 BackTask-Klassen keine schöne Lösung ist??? Wer kann mir helfen?

Hier der Code:

Code:
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
private Spinner sp_kategorie, sp_preisrel;

    //Spinner Kategorie
    ArrayList<String> listItems = new ArrayList<>();

    //Spinner Preis relativ
    ArrayList<String> listItemsPreisrel = new ArrayList<>();

    //Spinner
    ArrayAdapter<String> adapter1;
    ArrayAdapter<String> adapter2;
    HttpURLConnection urlConnection = null;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_anghinzu);

        //Spinner Kategorie
        sp_kategorie = (Spinner) findViewById(R.id.sp_kategorie);
        adapter1 = new ArrayAdapter<String>(this, R.layout.spinner_layout, R.id.txt, listItems);//adapter = new ArrayAdapter<String>(this, R.layout.spinner_layout,R.id.txt, listItems);
        sp_kategorie.setAdapter(adapter1);

        //Spinner Preis relativ
        sp_preisrel = (Spinner) findViewById(R.id.sp_preisrel);
        adapter2 = new ArrayAdapter<String>(this, R.layout.spinner_layout, R.id.txt, listItemsPreisrel);
        sp_preisrel.setAdapter(adapter2);
    }

    //Spinner
    protected void onStart(){
        super.onStart();
        BackTask bt = new BackTask();
        bt.execute();
    }

    //Spinner Kategorie aus mysql laden
    private class BackTask extends AsyncTask<Void, Void, Void>{
        ArrayList<String> list;
        protected void onPreExecute(){
            super.onPreExecute();
            list = new ArrayList<>();
        }

        protected Void doInBackground(Void...params){
            InputStream is = null;
            String result="";

            try {

                URL url = new URL("http://www.techcad.bplaced.net/kategorie.php");
                urlConnection = (HttpURLConnection) url.openConnection();
                urlConnection.connect();
                is = urlConnection.getInputStream();
                
            }catch (Exception e) {
                e.printStackTrace();
            }
            try{
                BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(is,"utf-8"));
                String line ="";
                while((line = bufferedReader.readLine())!=null){
                    result+=line;
                }
                is.close();
            }catch(IOException e){
                e.printStackTrace();
            }
            try{
                JSONArray jsonArray = new JSONArray(result);
                for(int i=0; i<jsonArray.length();i++){
                    JSONObject jsonObject=jsonArray
                            .getJSONObject(i);
                    list.add(jsonObject.getString("Kategorie"));//iname
                }
            }catch (JSONException e){
                e.printStackTrace();
            }
            return null;
        }
        protected void onPostExecute (Void result){
            listItems.addAll(list);
            adapter1.notifyDataSetChanged();
        }

    }

    //Spinner Preis relativ aus mysql laden
    private class BackTask1 extends AsyncTask<Void, Void, Void>{
        ArrayList<String> list1;
        protected void onPreExecute(){
            super.onPreExecute();
            list1 = new ArrayList<>();
        }

        protected Void doInBackground(Void...params){
            InputStream is = null;
            String result="";

            try {

                URL url = new URL("http://www.techcad.bplaced.net/preis_rel.php");
                urlConnection = (HttpURLConnection) url.openConnection();
                urlConnection.connect();
                is = urlConnection.getInputStream();

            }catch (Exception e) {
                e.printStackTrace();
            }
            // Convert the response string
            try{
                BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(is,"utf-8"));
                String line ="";
                while((line = bufferedReader.readLine())!=null){
                    result+=line;
                }
                is.close();
            }catch(IOException e){
                e.printStackTrace();
            }
            // Parse json string
            try{
                JSONArray jsonArray = new JSONArray(result);
                for(int i=0; i<jsonArray.length();i++){
                    JSONObject jsonObject=jsonArray
                            .getJSONObject(i);
                    list1.add(jsonObject.getString("Einheit"));//iname
                }
            }catch (JSONException e){
                e.printStackTrace();
            }
            return null;
        }
        protected void onPostExecute (Void result){
            listItemsPreisrel.addAll(list1);
            adapter2.notifyDataSetChanged();
        }

    }
 
D

deek

Stammgast
Die zweite BackTask Klasse wird von dir gar nicht instanziiert oder gestartet. (Zumindest nicht in dem Code, den man sieht)
 
H

haner

Ambitioniertes Mitglied
Threadstarter
Danke für die Hilfe. Ja, das war es.
 
swa00

swa00

Moderator
Teammitglied
Hallo Haner,

ein kleiner Hinweis an dich :
Die Antworten hier werden von Freiwilligen in der Freizeit verfasst.

Bitte bedenke im hiesigen Beispiel, dass deek deinen komplett Code durchgehen muss (und auch noch verstehen),
bevor er deinen eigenen fabrizierten "Flüchtigkeitsfehler" sieht und dir mitteilt.

Das ist dann eher keine Beantwortung einer "Fachfrage" sondern Fehlersuche.

Vielleicht solltest du bei deinem nächsten Post vorher nochmal selbst drüber gehen
und wenn du fachlich verzweifelst, sind wir gerne für dich da
 
Oben Unten