valor validar texto studio recorrer poner obtener limpiar eventos como codigo java android xml-parsing hashmap android-spinner

java - validar - Los valores de Spinners no se configuran correctamente



recorrer un spinner android (1)

Estoy obteniendo datos de la URL web XML en línea y obteniendo datos con éxito. Estoy usando la clave de hashmap y el valor a partir de ella ... y la clave y los valores que obtengo son los siguientes en mi LOGCAT-

{ Jackfruit=[Cabbage, Kesar, Amond], Date=[van, hall, Brinjal], Amond=[hall, van, Brinjal] }

1. Cuando abro la aplicación de Android por primera vez, spinner y spinner2 se vuelven a llenar en spinner, todos los datos se completan correctamente, pero en spinner2 se muestran todos los valores de las teclas ... pero solo deben mostrarse los valores de key displaying en spinner1

2. El elemento de la lista en ambos rotuladores se muestra correctamente cuando cambio el valor de la clave del spinner1, luego se muestran todos los menús desplegables con los valores correctos.

3. Cuando hago clic en el valor de spinner2, actúa como clave y comienza a mostrar el valor en spinner; en su lugar, debe colocar el valor que hago clic.

Lo dibujé en un bloc de notas eché un vistazo al problema

{ Jackfruit=[Cabbage, Kesar, Amond], Date=[van, hall, Brinjal], Amond=[hall, van, Brinjal] }

Y mi código está debajo de MainActivity.java

@SuppressLint("NewApi") public class MainActivity extends Activity implements AdapterView.OnItemSelectedListener, OnClickListener { ArrayList<String> title; ArrayList<String> title2; Button button; Spinner spinner; Spinner spinner2; private EditText FromFruitsDateEtxt; //private EditText toDateEtxt; private DatePickerDialog FromFruitsDatePickerDialog; //private DatePickerDialog toDatePickerDialog; private SimpleDateFormat dateFormatter; ArrayAdapter<String> FromFruits_adapter; ArrayAdapter<String> FromFruits_adapter2; Map<String, List<String>> values = new HashMap<String, List<String>>(); @TargetApi(Build.VERSION_CODES.GINGERBREAD) @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); title = new ArrayList<String>(); title2 = new ArrayList<String>(); button = (Button) findViewById(R.id.button1); spinner = (Spinner) findViewById(R.id.spinner1); spinner.setOnItemSelectedListener(this); spinner2 = (Spinner) findViewById(R.id.spinner2); spinner2.setOnItemSelectedListener(this); dateFormatter = new SimpleDateFormat("dd-MM-yyyy", Locale.US); findViewsById(); setDateTimeField(); if (android.os.Build.VERSION.SDK_INT > 9) { StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build(); StrictMode.setThreadPolicy(policy); } button.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { parse(); FromFruits_adapter=new ArrayAdapter<String>(getBaseContext(), android.R.layout.simple_spinner_item, title); FromFruits_adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); FromFruits_adapter2 = new ArrayAdapter<String>(getBaseContext(), android.R.layout.simple_spinner_item, title2); FromFruits_adapter2.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); spinner.setAdapter(FromFruits_adapter); FromFruits_adapter2.clear(); FromFruits_adapter2.notifyDataSetChanged(); spinner2.setAdapter(FromFruits_adapter2); } private Object FromFruits_adapter(int i) { // TODO Auto-generated method stub return null; } }); } public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) { String lang_Name = parent.getItemAtPosition(pos).toString(); List<String> lang_Key = values.get(lang_Name); FromFruits_adapter2.clear(); for(String s : lang_Key){ FromFruits_adapter2.insert(s, FromFruits_adapter2.getCount()); } FromFruits_adapter2.notifyDataSetChanged(); Toast.makeText(parent.getContext(), ""+lang_Key, Toast.LENGTH_LONG).show(); } public void onNothingSelected(AdapterView<?> arg0) { } protected void parse() { try { URL url = new URL("web url www.xyz.xml"); DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); DocumentBuilder db = dbf.newDocumentBuilder(); Document doc = db.parse(new InputSource(url.openStream())); doc.getDocumentElement().normalize(); NodeList nodeList = doc.getElementsByTagName("Fruits"); for (int i = 0; i < nodeList.getLength(); i++) { Element el = (Element) nodeList.item(i); // get the a:W value String awValue = el.getElementsByTagName("FromFruits").item(0).getTextContent(); // add the above value in our map as key if it isn''t present in the map, this key will // have a list associated with it in which ALL the values for a:R will be stored, if // the awValue key is present then you just add the new a:R value to its list if (!values.containsKey(awValue)) { values.put(awValue, new ArrayList<String>()); } // also add the value pointed by a:R to the list associated with a:W String arValue = el.getElementsByTagName("ToFruits").item(0).getTextContent(); values.get(awValue).add(arValue); // Log.d("ADebugTag", "Value: " + arValue); } Log.d("ADebugTag", "Value: " + values); for (int i = 0; i < nodeList.getLength(); i++) { Node node = nodeList.item(i); Element fstElmnt = (Element) node; NodeList nameList = fstElmnt.getElementsByTagName("FromFruits"); Element nameElement = (Element) nameList.item(0); nameList = nameElement.getChildNodes(); NodeList websiteList = fstElmnt.getElementsByTagName("ToFruits"); Element websiteElement = (Element) websiteList.item(0); websiteList = websiteElement.getChildNodes(); title.add(((Node) nameList.item(0)).getNodeValue()); } NodeList nodeList2 = doc.getElementsByTagName("Fruits"); for (int i = 0; i < nodeList2.getLength(); i++) { Node node = nodeList2.item(i); Element fstElmnt = (Element) node; NodeList nameList = fstElmnt.getElementsByTagName("ToFruits"); Element nameElement = (Element) nameList.item(0); nameList = nameElement.getChildNodes(); title2.add(((Node) nameList.item(0)).getNodeValue()); } Set<String> set = new LinkedHashSet<String>(title); title = new ArrayList<String>(set); // Collection<String> set = new LinkedHashSet<String>(months); Set<String> set2 = new LinkedHashSet<String>(title2); title2 = new ArrayList<String>(set2); System.out.println("list are"); System.out.println(set); System.out.println("list 2 are"); System.out.println(set2); } catch (Exception e) { System.out.println("XML Pasing Excpetion = " + e); } } @Override public void onClick(View view) { if(view == FromFruitsDateEtxt) { FromFruitsDatePickerDialog.show(); } else { Log.d("errorrrr", "soryy"); } } }

El problema en el boceto se puede ver


Lo resolví solo y uno de mi amigo Ricardo Barroca de . Ve a mis declaraciones comentadas

spinner.setOnItemSelectedListener(this); spinner2 = (Spinner) findViewById(R.id.spinner2); //spinner2.setOnItemSelectedListener(this);

Esto resolvió mi problema de clics de spinner2, que era recuperar los valores en lugar de establecerse en spinner.

Y desde el código de abajo borró los valores pre poblados a spinner1 y spinner2

from_adapter=new ArrayAdapter<String>(getBaseContext(),android.R.layout.simple_spinner_item, title); from_adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); title2.clear(); from_adapter2=new ArrayAdapter<String>(getBaseContext(),android.R.layout.simple_spinner_item, title2); from_adapter2.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); spinner.setAdapter(from_adapter); //from_adapter2.clear(); //from_adapter2.notifyDataSetChanged(); spinner2.setAdapter(from_adapter2);