【问题标题】:How to store values as variables in iterator, for loop?如何将值存储为迭代器中的变量,for循环?
【发布时间】:2013-10-13 09:10:10
【问题描述】:

我正在开发一个 Android 应用。我正在使用 Jsoup 从页面中检索元素。然后,我将遍历该集合以获取其中的每个单独部分。我不确定如何将元素的每个实例保存为不同的变量。我认为我可以为此使用 for 循环,但我不太明白。我将如何确定选择多长时间的长度?我将如何使用它?我正在从这里检索元素:http://lapi.transitchicago.com/api/1.0/ttarrivals.aspx?key=201412abc85d49b2b83f907f9e329eaa&mapid=40380。我的代码如下:

public class TestStation extends Activity {


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
        setContentView(R.layout.test_station);
        StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
        StrictMode.setThreadPolicy(policy); 

        Intent intent = getIntent();
        String value = intent.getExtras().getString("value");

        Uri my = Uri.parse("http://lapi.transitchicago.com/api/1.0/ttarrivals.aspx?key=201412abc85d49b2b83f907f9e329eaa&mapid="+value);

        String myUrl = my.toString();



Document doc = null;

TextView tv1 = (TextView) findViewById(R.id.tv1);

try {
    doc = Jsoup.connect(myUrl).userAgent("Mozilla/5.0 (Macintosh; U; Intel Mac OS X; de-de) AppleWebKit/523.10.3 (KHTML, like Gecko) Version/3.0.4 Safari/523.10").get();
} catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}
Elements elem = doc.select("eta"); 
Iterator<Element> iterator = elem.iterator();

while(iterator.hasNext())
{ Element div = iterator.next();

    Elements arrT = div.select("arrT");
     Elements prdt = div.select("prdt");
     Elements destNm = div.select("destNm");
    Elements rt = div.select("rt");
    String DestNm = destNm.text();
    String Rt = rt.text();
    tv1.setText(String.valueOf (Rt));

我想将 arrT、pdrt 和 destNm 的每个实例(有很多)存储为不同的变量。我怎么会这样做呢?感谢您的帮助。

【问题讨论】:

    标签: java android for-loop iterator


    【解决方案1】:

    `您能否为您感兴趣的属性创建一个包含 getter 和 setter 的类,并创建一个数组?

    编辑: 创建你的类:

    public class YourClass {
    
    private Element arrt;
    ...
    
    public void setArrT (String input) {
        arrt = input;
    }
    public Element getArrt() {
     return arrt;
    }
    ....
    
    }
    

    试一试。

    【讨论】:

      【解决方案2】:

      您可以使用泛型类型列表

      ArrayList<Elements> xx = new ArrayList<Elements>();
      

      然后在你的while循环中

       xx.add(arrT);
      

      【讨论】:

      • 那么我是否必须执行上面相同的代码,复制和粘贴但使用不同的变量名?
      • 或者,我可以使用 for 循环,但我该如何实现呢?
      • 我看到您的 URL 是 XML(而不是 HTML)。您可能想要使用 jsoup XML 解析器(或其他解析器)stackoverflow.com/questions/9886531/how-to-parse-xml-with-jsoup
      • 到目前为止一切正常。我可能很快就会看到,但我现在想解决这个问题。那么对于一个for循环,我该如何实现呢?
      • for (int i=0; i&lt;elem.size();i++){ -- 假设 Elements 以某种方式实现 List
      【解决方案3】:

      Unicode 和 UTF-8 之间的转换

      try { 
      String string = "\u201cGoodbye Athens thanks";
      byte[] utf8 = string.getBytes("UTF-8");
      string = new String(utf8, "UTF-8");
      }  catch (UnsupportedEncodingException e) {
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-11-09
        • 2022-12-04
        • 2022-01-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多