void parse_ExamList()
{
ArrayList menuItems = new ArrayList();
XMLParser parser = new XMLParser();
//String xml = parser.getXmlFromUrl(URL); // getting XML
Document doc = parser.getDomElement(xmlContent); // getting DOM element
//count_questions=2;
NodeList nl = doc.getElementsByTagName(KEY_EXAMSET);
// looping through all item nodes
for ( int i = 0; i < nl.getLength();i++) {
// while(counter< nl.getLength())
// {
// creating new HashMap
HashMap map = new HashMap();
Element e = (Element) nl.item(i);
// adding each child node to HashMap key => value
//map.put(KEY_EXAMSET, parser.getValue(e, KEY_EXAMSET));
map.put(KEY_SETID, parser.getValue(e, KEY_SETID));
map.put(KEY_SETNAME, parser.getValue(e, KEY_SETNAME));
//Log.i("Set ID: ", parser.getValue(e, KEY_SETID));
//Log.i("Set Name: ", parser.getValue(e, KEY_SETNAME));
menuItems.add(map);
}
}
Если вы заметите, вы можете увидеть, что key_setid и key_setname в ArrayList. Я должен заполнить спиннер с помощью key_setname , и key_setid не будет показан в спиннере. Но если элемент нажимается, то идентификатор, соответствующий имени, должен быть получен для отправки на сервер. : < /p>
// add items into exam list spinner dynamically
public void addItemsOnExamListSpinner()
{
List list = new ArrayList();
list.add("Speed Test 150(min) PO Set-01");
ArrayAdapter dataAdapter = new ArrayAdapter(this,
android.R.layout.simple_spinner_item, list);
dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
exam_list_spinner.setAdapter(dataAdapter);
}
< /code>
[b] Как мне заполнить спиннер с помощью ArrayList, который получается при анализе XML? < /strong> < /p>
Это полная активность < /strong>: < /p>
public class SpeedTestExamNameActivity extends Activity {
Spinner exam_list_spinner;
Button detailsBtn;
TextView showUser;
String full_name;
//variables to get response from server
String responseBody;
//variables required for parsing the XML
String xmlContent=null;
// XML node keys
static final String KEY_EXAMSET = "ExamSet"; // parent node
static final String KEY_SETID = "SetId";
static final String KEY_SETNAME = "SetName";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_speed_test_exam_name);
//checking internet connectivity to download list
isOnline_downloadList();
//Showing user full name after login
full_name=getFromPreference("user_name");
//textview to show user name
showUser=(TextView)findViewById(R.id.speed_username_textView);
showUser.setText("Welcome, "+full_name);
//spinner
exam_list_spinner = (Spinner) findViewById(R.id.speed_examlist_spinner);
//adding items to spinners
addItemsOnExamListSpinner();
// onclick details button
detailsBtn = (Button) findViewById(R.id.speed_exam_details_button);
detailsBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(SpeedTestExamNameActivity.this,
"Exam List Spinner: "+ String.valueOf(exam_list_spinner.getSelectedItem()),
Toast.LENGTH_SHORT).show();
Intent intent = new Intent(SpeedTestExamNameActivity.this, SpeedTestActivity.class);
SpeedTestExamNameActivity.this.startActivity(intent);
}
});
}
//getting content from preferences
public String getFromPreference(String variable_name)
{
String preference_return;
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
preference_return = preferences.getString(variable_name,"");
return preference_return;
}
//check connection
public boolean isOnline_downloadList() {
ConnectivityManager cm =(ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo netInfo = cm.getActiveNetworkInfo();
if (netInfo != null && netInfo.isConnectedOrConnecting()) {
//sending request for login
new MyAsyncTask().execute(getFromPreference("student_code"));
return true;
}
//alert box to show internet connection error
AlertDialog.Builder Internet_Alert = new AlertDialog.Builder(SpeedTestExamNameActivity.this);
// set title
Internet_Alert.setCancelable(false);
Internet_Alert.setTitle("Attention!");
Internet_Alert.setMessage("This application requires internet connectivity, no internet connection detected");
Internet_Alert.setPositiveButton("Quit", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface arg0, int arg1)
{
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
onQuitPressed();
}
});
Internet_Alert.create().show();
return false;
}
//to remove application from task manager
public void onQuitPressed() {
int pid = android.os.Process.myPid();
android.os.Process.killProcess(pid);
}
//===================================================================================================================================
//sending student code to server to get exam list
//===================================================================================================================================
private class MyAsyncTask extends AsyncTask{
@Override
protected Double doInBackground(String... params) {
// TODO Auto-generated method stub
postData(params[0]);
return null;
}
protected void onPostExecute(Double result){
//Toast.makeText(getApplicationContext(), responseBody, Toast.LENGTH_LONG).show();
//Log.i("response: ", responseBody);
//processResponce(responseBody);
//going to next activity
xmlContent=responseBody;
parse_ExamList();
}
protected void onProgressUpdate(Integer... progress){
}
public void postData(String student_code) {
// Create a new HttpClient and Post Header
HttpClient httpclient = new DefaultHttpClient();
//HttpPost httppost = new HttpPost("http://icaerp.com/AndroidDataService/dataServiceAndroid.asmx/login");
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(SpeedTestExamNameActivity.this);
final String url_first = preferences.getString("URLFirstPart","");
HttpPost httppost = new HttpPost(url_first+"ExamList");
try {
// Data that I am sending
List nameValuePairs = new ArrayList();
nameValuePairs.add(new BasicNameValuePair("StudentCode", student_code));
//nameValuePairs.add(new BasicNameValuePair("Password", passwrd));
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
// Execute HTTP Post Request
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
HttpResponse response = httpclient.execute(httppost);
responseBody = EntityUtils.toString(response.getEntity());
Log.d("result", responseBody);
}
catch (Throwable t ) {
//Toast.makeText( getApplicationContext(),""+t,Toast.LENGTH_LONG).show();
Log.d("Error Time of Login",t+"");
}
}
}
//===================================================================================================================================
//END sending EmailAddress and Password to server
//===================================================================================================================================
// function to populate SPINNER with exam list from xml
void parse_ExamList()
{
ArrayList menuItems = new ArrayList();
XMLParser parser = new XMLParser();
//String xml = parser.getXmlFromUrl(URL); // getting XML
Document doc = parser.getDomElement(xmlContent); // getting DOM element
//count_questions=2;
NodeList nl = doc.getElementsByTagName(KEY_EXAMSET);
// looping through all item nodes
for ( int i = 0; i < nl.getLength();i++) {
// while(counter< nl.getLength())
// {
// creating new HashMap
HashMap map = new HashMap();
Element e = (Element) nl.item(i);
// adding each child node to HashMap key => value
//map.put(KEY_EXAMSET, parser.getValue(e, KEY_EXAMSET));
map.put(KEY_SETID, parser.getValue(e, KEY_SETID));
map.put(KEY_SETNAME, parser.getValue(e, KEY_SETNAME));
//Log.i("Set ID: ", parser.getValue(e, KEY_SETID));
//Log.i("Set Name: ", parser.getValue(e, KEY_SETNAME));
menuItems.add(map);
}
}
// add items into exam list spinner dynamically
public void addItemsOnExamListSpinner()
{
List list = new ArrayList();
list.add("Speed Test 150(min) PO Set-01");
ArrayAdapter dataAdapter = new ArrayAdapter(this,
android.R.layout.simple_spinner_item, list);
dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
exam_list_spinner.setAdapter(dataAdapter);
}
}
< /code>
Это файл макета < /strong>: < /p>
Что мне делать, чтобы заполнить спиннер из ArrayList, возвращаемого методом анализа XML? [/b]
У меня есть действие, в котором я должен проанализировать XML и заполнять спиннер, используя проанализированные данные. Это метод: < /p>
[code]void parse_ExamList() {
ArrayList menuItems = new ArrayList();
XMLParser parser = new XMLParser(); //String xml = parser.getXmlFromUrl(URL); // getting XML Document doc = parser.getDomElement(xmlContent); // getting DOM element
//count_questions=2;
NodeList nl = doc.getElementsByTagName(KEY_EXAMSET); // looping through all item nodes for ( int i = 0; i < nl.getLength();i++) {
// while(counter< nl.getLength()) // { // creating new HashMap HashMap map = new HashMap();
Element e = (Element) nl.item(i); // adding each child node to HashMap key => value //map.put(KEY_EXAMSET, parser.getValue(e, KEY_EXAMSET)); map.put(KEY_SETID, parser.getValue(e, KEY_SETID)); map.put(KEY_SETNAME, parser.getValue(e, KEY_SETNAME)); //Log.i("Set ID: ", parser.getValue(e, KEY_SETID)); //Log.i("Set Name: ", parser.getValue(e, KEY_SETNAME));
menuItems.add(map); }
} [/code]
Если вы заметите, вы можете увидеть, что [b] key_setid [/b] и [b] key_setname [/b] в ArrayList. Я должен заполнить спиннер с помощью [b] key_setname [/b], и [b] key_setid [/b] не будет показан в спиннере. Но если элемент нажимается, то идентификатор, соответствующий имени, должен быть получен для отправки на сервер. : < /p>
[code]// add items into exam list spinner dynamically public void addItemsOnExamListSpinner() { List list = new ArrayList(); list.add("Speed Test 150(min) PO Set-01");
//checking internet connectivity to download list isOnline_downloadList();
//Showing user full name after login full_name=getFromPreference("user_name"); //textview to show user name showUser=(TextView)findViewById(R.id.speed_username_textView); showUser.setText("Welcome, "+full_name); //spinner exam_list_spinner = (Spinner) findViewById(R.id.speed_examlist_spinner); //adding items to spinners addItemsOnExamListSpinner();
Toast.makeText(SpeedTestExamNameActivity.this, "Exam List Spinner: "+ String.valueOf(exam_list_spinner.getSelectedItem()), Toast.LENGTH_SHORT).show();
Intent intent = new Intent(SpeedTestExamNameActivity.this, SpeedTestActivity.class); SpeedTestExamNameActivity.this.startActivity(intent); } }); }
//getting content from preferences public String getFromPreference(String variable_name) { String preference_return; SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this); preference_return = preferences.getString(variable_name,"");
return preference_return; }
//check connection public boolean isOnline_downloadList() { ConnectivityManager cm =(ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo netInfo = cm.getActiveNetworkInfo(); if (netInfo != null && netInfo.isConnectedOrConnecting()) {
//sending request for login new MyAsyncTask().execute(getFromPreference("student_code"));
return true; }
//alert box to show internet connection error AlertDialog.Builder Internet_Alert = new AlertDialog.Builder(SpeedTestExamNameActivity.this); // set title Internet_Alert.setCancelable(false); Internet_Alert.setTitle("Attention!"); Internet_Alert.setMessage("This application requires internet connectivity, no internet connection detected"); Internet_Alert.setPositiveButton("Quit", new DialogInterface.OnClickListener() { public void onClick(DialogInterface arg0, int arg1) { Intent intent = new Intent(Intent.ACTION_MAIN); intent.addCategory(Intent.CATEGORY_HOME); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(intent); onQuitPressed(); } });
Internet_Alert.create().show(); return false; }
//to remove application from task manager public void onQuitPressed() {
int pid = android.os.Process.myPid(); android.os.Process.killProcess(pid); }
//=================================================================================================================================== //sending student code to server to get exam list //=================================================================================================================================== private class MyAsyncTask extends AsyncTask{
public void postData(String student_code) { // Create a new HttpClient and Post Header HttpClient httpclient = new DefaultHttpClient(); //HttpPost httppost = new HttpPost("http://icaerp.com/AndroidDataService/dataServiceAndroid.asmx/login");
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(SpeedTestExamNameActivity.this); final String url_first = preferences.getString("URLFirstPart",""); HttpPost httppost = new HttpPost(url_first+"ExamList");
try { // Data that I am sending List nameValuePairs = new ArrayList(); nameValuePairs.add(new BasicNameValuePair("StudentCode", student_code)); //nameValuePairs.add(new BasicNameValuePair("Password", passwrd)); httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
Log.d("result", responseBody); } catch (Throwable t ) { //Toast.makeText( getApplicationContext(),""+t,Toast.LENGTH_LONG).show(); Log.d("Error Time of Login",t+""); } } } //=================================================================================================================================== //END sending EmailAddress and Password to server //===================================================================================================================================
// function to populate SPINNER with exam list from xml void parse_ExamList() {
ArrayList menuItems = new ArrayList();
XMLParser parser = new XMLParser(); //String xml = parser.getXmlFromUrl(URL); // getting XML Document doc = parser.getDomElement(xmlContent); // getting DOM element
//count_questions=2;
NodeList nl = doc.getElementsByTagName(KEY_EXAMSET); // looping through all item nodes for ( int i = 0; i < nl.getLength();i++) {
// while(counter< nl.getLength()) // { // creating new HashMap HashMap map = new HashMap();
Element e = (Element) nl.item(i); // adding each child node to HashMap key => value //map.put(KEY_EXAMSET, parser.getValue(e, KEY_EXAMSET)); map.put(KEY_SETID, parser.getValue(e, KEY_SETID)); map.put(KEY_SETNAME, parser.getValue(e, KEY_SETNAME)); //Log.i("Set ID: ", parser.getValue(e, KEY_SETID)); //Log.i("Set Name: ", parser.getValue(e, KEY_SETNAME));
menuItems.add(map); }
}
// add items into exam list spinner dynamically public void addItemsOnExamListSpinner() { List list = new ArrayList(); list.add("Speed Test 150(min) PO Set-01");
ArrayAdapter dataAdapter = new ArrayAdapter(this, android.R.layout.simple_spinner_item, list); dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); exam_list_spinner.setAdapter(dataAdapter); }
} < /code>
Это файл макета < /strong>: < /p>
[/code]
Что мне делать, чтобы заполнить спиннер из ArrayList, возвращаемого методом анализа XML? [/b]