Java Jsoup无法正确获取html(?)
好的,我用Jsoup从网站上下载了一些html,我试着把这些html放到一个列表视图中。应用程序编译时没有错误,但当我单击按钮时,listview为空。这(imo)可能是因为我没有正确地实现jsoup代码,并且没有下载html,或者因为即使正确地下载html,也没有正确地将其添加到listview(是的,我已经实现了internet权限)。这是我的密码:Java Jsoup无法正确获取html(?),java,android,html,listview,Java,Android,Html,Listview,好的,我用Jsoup从网站上下载了一些html,我试着把这些html放到一个列表视图中。应用程序编译时没有错误,但当我单击按钮时,listview为空。这(imo)可能是因为我没有正确地实现jsoup代码,并且没有下载html,或者因为即使正确地下载html,也没有正确地将其添加到listview(是的,我已经实现了internet权限)。这是我的密码: package davidgb.baseballspain; import android.os.AsyncTask; import andr
package davidgb.baseballspain;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.ListView;
import android.widget.TextView;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.select.Elements;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button but1 = (Button) findViewById(R.id.but);
but1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
new doit().execute();
}
});}
public class doit extends AsyncTask<Void, Void, Void> {
ListView lista = (ListView)findViewById(R.id.lista);
String result1;
String result2;
String result3;
String result4;
String result5;
String result6;
String[] resultsizq = {result1, result3, result5,};
String[] resultsder = {result2, result4, result6,};
@Override
protected void onPostExecute(Void aVoid) {
CustomAdapter customAdapter = new CustomAdapter();
lista.setAdapter(customAdapter);
}
Class CustomAdapter extends BaseAdapter{
@Override
public int getCount() {
return resultsizq.length;
}
@Override
public Object getItem(int position) {
return null;
}
@Override
public long getItemId(int position) {
return 0;
}
@Override
public View getView(int position, View view, ViewGroup parent) {
view = getLayoutInflater().inflate(R.layout.customlayout,null);
TextView resultsiz= (TextView)view.findViewById(R.id.resultsiz);
TextView resultsde= (TextView)view.findViewById(R.id.resultsde);
resultsiz.setText(resultsizq[position]);
resultsde.setText(resultsder[position]);
return view;
}
}
protected Void doInBackground(Void... params) {
try {
Document doc = Jsoup.connect("http://www.rfebs.es/estadisticas/2017/liga/B_res.php").get();
Elements result = doc.getElementsByClass("bianco_me");
if (result.size() > 0) {
result1 = result.get(1).text();
result2 = result.get(2).text();
result3 = result.get(3).text();
result4 = result.get(4).text();
result5 = result.get(5).text();
result6 = result.get(6).text();
}
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}}
package davidgb.baseball西班牙;
导入android.os.AsyncTask;
导入android.os.Bundle;
导入android.support.v7.app.AppActivity;
导入android.view.view;
导入android.view.ViewGroup;
导入android.widget.BaseAdapter;
导入android.widget.Button;
导入android.widget.ListView;
导入android.widget.TextView;
导入org.jsoup.jsoup;
导入org.jsoup.nodes.Document;
导入org.jsoup.select.Elements;
公共类MainActivity扩展了AppCompatActivity{
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button but1=(Button)findViewById(R.id.but);
但是1.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
新建doit().execute();
}
});}
公共类doit扩展了异步任务{
ListView lista=(ListView)findViewById(R.id.lista);
字符串结果1;
字符串结果2;
字符串结果3;
字符串结果4;
字符串结果5;
字符串结果6;
字符串[]resultsizq={result1,result3,result5,};
字符串[]resultsder={result2,result4,result6,};
@凌驾
受保护的void onPostExecute(void避免){
CustomAdapter CustomAdapter=新的CustomAdapter();
setAdapter(customAdapter);
}
类CustomAdapter扩展了BaseAdapter{
@凌驾
public int getCount(){
返回resultsizq.length;
}
@凌驾
公共对象getItem(int位置){
返回null;
}
@凌驾
公共长getItemId(int位置){
返回0;
}
@凌驾
公共视图getView(内部位置、视图视图、视图组父视图){
view=GetLayoutFlater().充气(R.layout.customlayout,null);
TextView resultsiz=(TextView)view.findViewById(R.id.resultsiz);
TextView resultsde=(TextView)view.findViewById(R.id.resultsde);
resultsiz.setText(resultsizq[position]);
resultsde.setText(resultsder[position]);
返回视图;
}
}
受保护的Void doInBackground(Void…参数){
试一试{
Document doc=Jsoup.connect(“http://www.rfebs.es/estadisticas/2017/liga/B_res.php).get();
元素结果=doc.getElementsByClass(“bianco_me”);
如果(result.size()>0){
result1=result.get(1.text();
result2=result.get(2.text();
result3=result.get(3.text();
result4=result.get(4.text();
result5=result.get(5.text();
result6=result.get(6.text();
}
}捕获(例外e){
e、 printStackTrace();
}
返回null;
}
}}
我使用下面的Java代码检索网站徽标
@Override
protected Void doInBackground(Void... params) {
try {
// Connect to the web site
Document document = Jsoup.connect(url).get();
// Using Elements to get the class data
Elements img = document.select("div[class=header-logo] a[title=AndroidBegin] img[src]");
// Locate the src attribute
String imgSrc = img.attr("src");
// Download image from URL
InputStream input = new java.net.URL(imgSrc).openStream();
// Decode Bitmap
bitmap = BitmapFactory.decodeStream(input);
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
和网站源代码是
<div class="header-logo"><a href="http://www.androidbegin.com/" rel="home" title="AndroidBegin"><img src="http://www.androidbegin.com/wp-content/uploads/2013/04/Web-Logo.png" alt="AndroidBegin" class="header-logo" /></a></div>
</div><!-- $header_logo_align -->
在doit
类中,您声明了stringresult1
直到stringresult6
,然后立即将其当前值(默认值-sonull
)存储在字符串[]resultsizq={result1,result3,result5,}代码>。这意味着数组中填充了null
s。即使以后更新result1
array的值,它仍将保留以前的值。我在下载html后一直在google上搜索如何更新字符串[],但没有找到任何结果。先生,你会怎么做?好的,没关系,修好了。