Wie Toast der zugehörige Wert auf den String-Wert ausgewählt aus dem SPINNER.Wie zeigt/TOAST das zugehörige Element des String-Arrays auf Spinner aus Xml Parsing ausgewählt
Ich bin in der Lage, die Spinner Datenaus dem unter XML-Format aber nicht in der Lage zu passieren seinen id, um sie für Toast zu bekommen.
**
APIGetCitiesResponse xmlns="http://xxxx">
<APIGetCitiesResult xmlns:a="http://xxxx.xxx" xmlns:i="http://www.w3.org/2010/XMLSchema-instance">
<a:Pair>
<a:FromID>10</a:FromID> <---This should Toast---->
<a:FromName>INDIA</a:FromName><---On selecting this from spinner ------->
<a:ToID>30</a:ToID>
<a:ToName>TURKEY</a:ToName>
</a:Pair>
<a:Pair>
<a:FromID>40</a:FromID>
<a:FromName>USA</a:FromName>
<a:ToID>10</a:ToID>
<a:ToName>INDIA</a:ToName>
</a:Pair>
<a:Pair>
<a:FromID>19</a:FromID>
<a:FromName>CHINA</a:FromName>
<a:ToID>40</a:ToID>
<a:ToName>USA</a:ToName>
</a:Pair>
<a:Pair>
<a:FromID>30</a:FromID>
<a:FromName>TURKEY</a:FromName>
<a:ToID>10</a:ToID>
<a:ToName>INDIA</a:ToName>
</a:Pair>
</Result>
</Response>
**
MainActivity.java
public class MainActivity extends Activity implements AdapterView.OnItemSelectedListener, OnClickListener {
ArrayList<String> title;
ArrayList<String> title2;
Button button;
Spinner spinner;
Spinner spinner2;
private EditText fromDateEtxt;
//private EditText toDateEtxt;
private DatePickerDialog fromDatePickerDialog;
//private DatePickerDialog toDatePickerDialog;
private SimpleDateFormat dateFormatter;
ArrayAdapter<String> from_adapter;
ArrayAdapter<String> from_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) {
// TODO Auto-generated method stub
parse();
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);
}
private Object from_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);
from_adapter2.clear();
for(String s : lang_Key){
from_adapter2.insert(s, from_adapter2.getCount());
}
from_adapter2.notifyDataSetChanged();
Toast.makeText(parent.getContext(), ""+lang_Key,
Toast.LENGTH_LONG).show();
}
public void onNothingSelected(AdapterView<?> arg0) {
}
protected void parse() {
// TODO Auto-generated method stub
try {
URL url = new URL(
"www.example.com");
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document doc = db.parse(new InputSource(url.openStream()));
doc.getDocumentElement().normalize();
NodeList nodeList = doc.getElementsByTagName("a:Pair");
for (int i = 0; i < nodeList.getLength(); i++) {
Element el = (Element) nodeList.item(i);
// get the a:W value
String awValue = el.getElementsByTagName("a:FromName").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("a:ToName").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("a:FromName");
Element nameElement = (Element) nameList.item(0);
nameList = nameElement.getChildNodes();
NodeList websiteList = fstElmnt.getElementsByTagName("a:ToName");
Element websiteElement = (Element) websiteList.item(0);
websiteList = websiteElement.getChildNodes();
title.add(((Node) nameList.item(0)).getNodeValue());
}
NodeList nodeList2 = doc.getElementsByTagName("a:Pair");
for (int i = 0; i < nodeList2.getLength(); i++) {
Node node = nodeList2.item(i);
Element fstElmnt = (Element) node;
NodeList nameList = fstElmnt.getElementsByTagName("a:ToName");
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 == fromDateEtxt) {
fromDatePickerDialog.show();
} else {
Log.d("errorrrr", "soryy");
}
}
}
Update: 1
Wenn ich den obigen Code wie unten beschrieben ändere, erhalte ich alle IDs, wenn der erste Spinner in Logcat Log.d ("fromid fromid", "fromid:" + fromid); aber wie man dies an den Spinner anhängt, so dass, wenn der pekuläre Wert angeklickt wird, seine spezielle ID Toasted ist.
NodeList nodeList = doc.getElementsByTagName("Pair");
for (int i = 0; i < nodeList.getLength(); i++) {
Element el = (Element) nodeList.item(i);
String awValue = el.getElementsByTagName("FromName").item(0).getTextContent();
if (!values.containsKey(awValue)) {
values.put(awValue, new ArrayList<String>());
String fromid = el.getElementsByTagName("FromID").item(0).getTextContent();
Log.d("fromid fromid", "fromid: " + fromid);
}
String arValue = el.getElementsByTagName("ToName").item(0).getTextContent();
values.get(awValue).add(arValue);
}
Für, dass Sie die IDs aus der XML wie '' title' und title2' erhalten müssen. –
@KNeerajLal siehe mein UPDATE: 1 –
@KNeerajLal Von XML-Daten wie und von dieser Codezeile (String fromid = el.getElementsByTagName ("FromID"). Item (0) .getTextContent();) i Ich bekomme alle IDs in Logcat ...... sollte ich Arraylist für die IDs auch machen ..... und dann, wie werde ich das an die ersten Spinner Daten anfügen, um Toast zu sein, wenn geklickt –