Autore Topic: collegamento tra spinner e listview  (Letto 393 volte)

Offline marco58

  • Nuovo arrivato
  • *
  • Post: 5
  • Respect: 0
    • Mostra profilo
collegamento tra spinner e listview
« il: 18 Ottobre 2017, 18:11:53 CEST »
0
Salve a tutti,
il mio problema è il seguente: quando seleziono un valore dallo spinner, vorrei farlo visualizzare all'interno della listview, ma l'applicazione va in crash.
Grazie in anticipo.
Allego qui il codice:
Codice (Java): [Seleziona]
package it.uniba.di.gamm.sms16.giocapp.fragment;

import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.os.AsyncTask;
import android.os.Build;
import android.os.Bundle;
import android.os.Handler;
import android.support.annotation.Nullable;
import android.support.annotation.RequiresApi;
import android.support.v4.app.Fragment;
import android.support.v4.view.GravityCompat;
import android.support.v4.widget.DrawerLayout;
import android.util.Log;
import android.view.Gravity;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.Spinner;
import android.widget.SpinnerAdapter;
import android.widget.TextView;
import android.widget.Toolbar;

import org.apache.http.NameValuePair;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;


import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

import it.uniba.di.gamm.sms16.giocapp.JSONParser;
import it.uniba.di.gamm.sms16.giocapp.R;

import static android.R.attr.value;
import static it.uniba.di.gamm.sms16.giocapp.R.id.spinnerCasaA;
import static it.uniba.di.gamm.sms16.giocapp.R.id.textView;


public class NewPartitaFragment extends Fragment {

    private static String url_all_giocatori = "http://giocapp.altervista.org/get_giocatori.php/";

    private static final String TAG_SUCCESS = "success";
    private static final String TAG_GIOCATORI = "Giocatore";
    private static final String TAG_ID_GIOCATORE = "IdGiocatore";
    private static final String TAG_COGNOME = "Cognome";
    private static final String TAG_NOME = "Nome";

    JSONParser jParser = new JSONParser();

    ArrayList<HashMap<Integer, String>> giocatoriList;
    String[] spinnerArray;
    String[] spinnerArrayGC;
    HashMap<Integer,String> giocatoriMap;
    HashMap<Integer,String> selectedGiocatoriMap;

    ArrayAdapter<String> adapterGCasa1;
    String idGiocatoreCasa1;
    // products JSONArray
    JSONArray giocatori = null;

    View view;
    Spinner spinnerCasaA1;
    Spinner spinnerCasaB1;
    Spinner spinnerOspA1;
    Spinner spinnerOspB1;
    ListView lstCasa1;
    ListView lstOsp1;
    EditText txtSquadraCasa1;
    EditText txtSquadraOsp1;

    String nomeGiocatoreSel;

    public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
        // Hashmap for ListView
        new LoadAllGiocatori().execute();
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        super.onViewCreated(view, savedInstanceState);
        getActivity().setTitle("Nuova partita");
        giocatoriList = new ArrayList<HashMap<Integer, String>>();
        selectedGiocatoriMap= new HashMap<Integer, String>();
    }

    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater,  @Nullable ViewGroup container,
                             @Nullable Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        view = inflater.inflate(R.layout.fragment_new_partita, container, false);
        //Toolbar toolbar = (Toolbar) view.findViewById(R.id.toolbarMain);

        txtSquadraCasa1 = (EditText) view.findViewById(R.id.txtSquadraCasa);
        txtSquadraOsp1 = (EditText) view.findViewById(R.id.txtSquadraOsp);
        lstCasa1 = (ListView) view.findViewById(R.id.lstCasa);
        lstOsp1 = (ListView) view.findViewById(R.id.lstOsp);
        spinnerCasaA1 = (Spinner) view.findViewById(R.id.spinnerCasaA);
        spinnerCasaB1 = (Spinner) view.findViewById(R.id.spinnerCasaB);
        spinnerOspA1 = (Spinner) view.findViewById(R.id.spinnerOspA);
        spinnerOspB1 = (Spinner) view.findViewById(R.id.spinnerOspB);

        //toolbar.setNavigationOnClickListener(new View.OnClickListener() {
        /**@Override
        public void onClick(View v) {
        getActivity().getFragmentManager().popBackStack();
        }
        });*/


        /**mDrawerLayout = (DrawerLayout) getActivity().findViewById(R.id.drawer_layout);
         final ImageButton btnOpenDrawer = (ImageButton) getView().findViewById(R.id.drawer_layout);

         btnOpenDrawer.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
        mDrawerLayout.openDrawer(Gravity.LEFT);
        }
        });*/


        return view;

    }

    class LoadAllGiocatori extends AsyncTask<String, String, String> {

        /**
         * Before starting background thread Show Progress Dialog
         */

        @Override
        protected void onPreExecute() {
            super.onPreExecute();
        }

        /**
         * getting All giocatori from url
         */

        protected String doInBackground(String... args) {
            // Building Parameters
            List<NameValuePair> params = new ArrayList<NameValuePair>();
            // getting JSON string from URL
            JSONObject json = jParser.makeHttpRequest(url_all_giocatori, "GET", params);

            // Check your log cat for JSON reponse
            Log.d("All Giocatori: ", json.toString());

            try {
                // Checking for SUCCESS TAG
                int success = json.getInt(TAG_SUCCESS);

                if (success == 1) {
                    // products found
                    // Getting Array of Products
                    giocatori = json.getJSONArray(TAG_GIOCATORI);

                    // creating new HashMap
                    HashMap<String, String> map = new HashMap<String, String>();

                    // looping through All Products

                    spinnerArray = new String[ giocatori.length()];
                    giocatoriMap = new HashMap<Integer, String>();
                    for (int i = 0; i <  giocatori.length(); i++)
                    {
                        JSONObject c = giocatori.getJSONObject(i);
                        int idTmp= c.getInt(TAG_ID_GIOCATORE);
                        giocatoriMap.put(idTmp,  c.getString(TAG_COGNOME) + " " + c.getString(TAG_NOME));
                        spinnerArray[i] =  c.getString(TAG_COGNOME) + " " + c.getString(TAG_NOME);
                    }
                    giocatoriList.add(giocatoriMap);



                    /*for (int i = 0; i < giocatori.length(); i++) {
                        JSONObject c = giocatori.getJSONObject(i);

                        // Storing each json item in variable
                        String id = c.getString(TAG_ID_GIOCATORE);
                        String cognome = c.getString(TAG_COGNOME);
                        String nome = c.getString(TAG_NOME);

                        // adding each child node to HashMap key => value
                        map.put(TAG_ID_GIOCATORE, id);
                        map.put(TAG_COGNOME, cognome + " " + nome);

                        // adding HashList to ArrayList
                        giocatoriList.add(map);
                    } */

                } else {
                    // no products found
                    // Launch Add New product Activity
                    /**Intent i = new Intent(getApplicationContext(),
                     NewProductActivity.class);
                     // Closing all previous activities
                     i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                     startActivity(i);*/

                }
            } catch (JSONException e) {
                e.printStackTrace();
            }

            return null;
        }

        /**
         * After completing background task Dismiss the progress dialog
         **/

        protected void onPostExecute(String file_url) {
            /**ListAdapter sAdap;
                    sAdap = new SimpleAdapter(view.getContext(), giocatoriList,
                            R.layout.fragment_show_new_partita, new String[]{TAG_ID_GIOCATORE, TAG_COGNOME},
                            new int[]{R.id.ColId, R.id.ColGiocatore});
                    spinnerCasaA1.setAdapter((SpinnerAdapter) sAdap);
            **/

            ArrayAdapter<String> adapter =new ArrayAdapter<String>(view.getContext(),android.R.layout.simple_spinner_item, spinnerArray);
            adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
            spinnerCasaA1.setAdapter(adapter);
            spinnerOspA1.setAdapter(adapter);

            spinnerCasaA1.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
                @Override
                public void onItemSelected(AdapterView<?> parentView, View selectedItemView, int position, long id) {
                    nomeGiocatoreSel = spinnerCasaA1.getSelectedItem().toString();
                    idGiocatoreCasa1 = giocatoriMap.get(spinnerCasaA1.getSelectedItemPosition());

                    spinnerArrayGC= new String[11];
                    selectedGiocatoriMap.put(0,  idGiocatoreCasa1);
                    //spinnerArrayGC[1] =  nomeGiocatoreSel;
                    giocatoriList.add(selectedGiocatoriMap);

                    adapterGCasa1 = new ArrayAdapter<String>(view.getContext(),android.R.layout.simple_spinner_item, spinnerArray);
                    adapterGCasa1.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
                    lstCasa1.setAdapter(adapterGCasa1);

                }

                @Override
                public void onNothingSelected(AdapterView<?> parentView) {
                    // your code here
                }
            });

            //spinnerCasaA1.setOnTouchListener(spinnerOnTouch);
            //spinnerCasaA1.setOnKeyListener(spinnerOnKey);


        }

    }

    private View.OnTouchListener spinnerOnTouch = new View.OnTouchListener() {
        public boolean onTouch(View v, MotionEvent event) {
            if (event.getAction() == MotionEvent.ACTION_UP) {
               //YOUR CODE
                //lstCasa1.add();
            }
            return false;
        }
    };
    private static View.OnKeyListener spinnerOnKey = new View.OnKeyListener() {
        public boolean onKey(View v, int keyCode, KeyEvent event) {
            if (keyCode == KeyEvent.KEYCODE_DPAD_CENTER) {
                //your code
                return true;
            } else {
                return false;
            }
        }
    };
}

Offline Ohmnibus

  • Utente senior
  • ****
  • Post: 804
  • Respect: +168
    • Github
    • Google+
    • @ohmnibus
    • Mostra profilo
    • Lords of Knowledge GdR
  • Dispositivo Android:
    Huawei P9 Lite
  • Play Store ID:
    Ohmnibus
  • Sistema operativo:
    Windows 10 x64
Re:collegamento tra spinner e listview
« Risposta #1 il: 19 Ottobre 2017, 10:01:15 CEST »
0
Cosa dicono i LOG?
Ohmnibus
Le mie app su Play Store

È stata trovata una soluzione al tuo problema? Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato.

Offline marco58

  • Nuovo arrivato
  • *
  • Post: 5
  • Respect: 0
    • Mostra profilo
Re:collegamento tra spinner e listview
« Risposta #2 il: 19 Ottobre 2017, 12:48:46 CEST »
0
usando il debug in questo metodo, sembra che in questo pezzo di codice mi si sballino tutti i valori:
Codice (Java): [Seleziona]
spinnerArrayGC= new String[11];
                    selectedGiocatoriMap.put(0,  idGiocatoreCasa1);
                    //spinnerArrayGC[1] =  nomeGiocatoreSel;
                    giocatoriList.add(selectedGiocatoriMap);

Ho provato di tutto cercando su internet, ma non funzionano