Заполняющий спиннер с использованием ArrayList в AndroidAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Заполняющий спиннер с использованием ArrayList в Android

Сообщение Anonymous »

У меня есть действие, в котором я должен проанализировать XML и заполнять спиннер, используя проанализированные данные. Это метод: < /p>

Код: Выделить всё

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]

Подробнее здесь: https://stackoverflow.com/questions/154 ... in-android
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»