Я использовал jsoup в AsyncTask, чтобы получить значение и текст опций и поместить их в текст/значение TreeMap (отсортированный HashMap) как так:
class TheaterGetter extends AsyncTask<Context, Void, Document> {
private Context context;
@Override
protected Document doInBackground(Context... contexts) {
context = contexts[0];
Document doc = null;
try {
doc = Jsoup.connect("http://landmarkcinemas.com").timeout(10000).get();
} catch (IOException e) {
Log.e("website connection error", e.getMessage());
}
return doc;
}
protected void onPostExecute(Document doc) {
Element allOptions = doc.select("select[id=campaign").first();
Elements options = allOptions.getElementsByTag("option");
options.remove(0);
TreeMap<String, String> theaters = new TreeMap<String, String>();
for (Element option:options) {
theaters.put(option.html(), option.attr("value"));
}
Тогда я сделал этот адаптер для вертушка:
public class TreeMapSpinAdapter extends ArrayAdapter{
private Context context;
private TreeMap<String, String> treeMap;
public TreeMapSpinAdapter(Context context, int textViewResourceId, TreeMap<String, String> treeMap){
super(context, textViewResourceId, treeMap.values().toArray());
this.context = context;
this.treeMap = treeMap;
}
@Override
public int getCount() {
return this.treeMap.values().size();
}
@Override
public Object getItem(int arg0) {
return this.treeMap.values().toArray()[arg0];
}
public Object getItem(String key) {
return treeMap.get(key);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
TextView label = new TextView(context);
label.setTextColor(Color.BLACK);
label.setText(treeMap.keySet().toArray()[position].toString());
return label;
}
@Override
public View getDropDownView(int position, View convertView, ViewGroup parent) {
TextView label = new TextView(context);
label.setTextColor(Color.BLACK);
label.setText(treeMap.keySet().toArray()[position].toString());
return label;
}
}
Тогда, еще в нашем AsyncTask мы создали вертушку так:
TreeMapSpinAdapter adapter = new TreeMapSpinAdapter(context, android.R.layout.simple_spinner_item, theaters);
final Spinner spinner = (Spinner) ((Activity) context).findViewById(R.id.spinner1);
spinner.setAdapter(adapter);
И, наконец, мы называем наш AsyncTask так:
new TheaterGetter().execute(this);
вещи называют театр это и потому, что в моем случае я получаю список местоположений театра.
Является ли страница HTML вашей или вы очищаете другой сайт? Другими словами, у вас есть sql-доступ к значениям выбора? – Nick
Точно, html-страница с веб-сайта (не под моим контролем) – user2669032
Я как раз собирался задать тот же вопрос, когда уточнил свой поиск в Google и нашел его опубликованным всего на час раньше. Нечетное совпадение. Может ли кто-нибудь помочь? Похоже, что это была бы обычная задача, которую кто-то уже сделал, и я уверен, что я и мой друг здесь предпочитают не изобретать колесо. – sajattack