gpt4 book ai didi

android 从 html 表单值(选择标签)填充微调器

转载 作者:行者123 更新时间:2023-11-30 03:26:26 24 4
gpt4 key购买 nike

您好,我目前正在寻找用 html 页面的选择部分中的值填充微调器的最佳/最简单方法。最终,微调器值必须与 html 选择部分中存在的值完全相同。我希望以最简单的方式做到这一点。我想到了以下想法:

  • 从 html 页面读取值(例如使用 lxml)
  • 将值添加到微调器(直接或如果不能在将值保存到数据库后添加)

有谁知道最简单的方法(对于读取部分和填充部分)?是否有一个 android 对象/类允许直接将 html 页面的值链接到微调器?

非常感谢您的帮助!本

最佳答案

我在 AsyncTask 中使用 jsoup 来获取选项的值和文本,并将它们放入文本/值 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);

东西被称为剧院这个那个,因为在我的例子中,我得到了一个剧院位置列表。

关于android 从 html 表单值(选择标签)填充微调器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18154518/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com