2013-11-01 9 views
0

doc가 null이 아니라면 doc의 모든 데이터를 ListView에 넣으려고합니다. 어떻게해야합니까? 작성하는 경우 Element = doc.select ("someSelector"); 그럼 ListView에 넣을 수 없다. 내 영어 (러시아어 i'am)에 대한Android : Jsoup : ListView에 모든 항목 넣기

죄송합니다

번호 : 호출 할 때 와일드 카드 문자로 *를 사용하는 경우

package com.example.phpfunctions; 

import java.io.IOException; 
import java.util.Locale; 

import org.jsoup.Jsoup; 
import org.jsoup.nodes.Document; 
import org.jsoup.select.Elements; 

import android.app.Activity; 
import android.os.AsyncTask; 
import android.os.Bundle; 
import android.view.Menu; 
import android.widget.AutoCompleteTextView; 
import android.widget.ListView; 
import android.widget.Toast; 

public class MainActivity extends Activity { 

    private final String lang = Locale.getDefault().getLanguage(); 
    private final String functions_list = "someURL"; 
    private final ListView lv = (ListView) findViewById(R.id.listView1); 
    Document doc = null; 
    AutoCompleteTextView input; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     new getData().execute(functions_list); 

     if(doc != null) 
     { 

      //--Write code here--// 

     } 
     else 
      Toast.makeText(this, "error", Toast.LENGTH_LONG).show(); 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.main, menu); 
     return true; 
    } 


    class getData extends AsyncTask<String, Void, Document> { 

     protected Document doInBackground(String... urls) { 

      try { 
       Document data = Jsoup.connect(urls[0]).get(); 
       return data; 
      } catch (IOException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 

       return null; 
      } 



     } 

     protected void onPreExecute() { 
     } 

     protected void onPostExecute(Document result) { 
      doc = result; 
     } 

    } 

} 

답변

0

당신은 페이지에서 모든 요소를 ​​선택할 수 있습니다 doc.select(). ListView에 모든 요소를 ​​추가하려면 각 요소를 일종의 배열 유형으로 저장해야합니다. ArrayList이며 ArrayAdapter도 사용하십시오. 예를 들어

: 당신은 단지 문서의 본문에있는 요소를 나열 할 경우

ArrayList<String> htmlElements = new ArrayList<String>(); 

    if(doc != null) 
    { 
     //--Write code here--// 
     Elements elements = doc.select("*"); // select all elements from that page 

     for (Element e : elements) { 
      htmlElements.add(e.html()); // or e.text(), depends on what you require 
     } 

     ArrayAdapter<String> adapter = new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_list_item_1, htmlElements); 
     lv.setAdapter(adapter); 
    } 

대신 doc.body().select("*")를 호출합니다. documentation은 다른 트릭을 읽을 가치가 있습니다.