JSOUP和ListView

JSOUP和ListView,listview,android-listview,jsoup,Listview,Android Listview,Jsoup,我正在构建一个个人应用程序,使用JSOUP将某些链接的文本放入ListView。对于每个链接,ListView中都应该有一个对应的条目,其中包含来自该链接的文本。当我运行应用程序时,它成功解析了所有这些文本。但是,它将所有聚集在一起的文本放在一个ListView条目中,然后对连续条目执行完全相同的操作。我哪里做错了?相关代码如下: public class MainActivity extends Activity { public Elements beer; public ArrayLis

我正在构建一个个人应用程序,使用JSOUP将某些链接的文本放入ListView。对于每个链接,ListView中都应该有一个对应的条目,其中包含来自该链接的文本。当我运行应用程序时,它成功解析了所有这些文本。但是,它将所有聚集在一起的文本放在一个ListView条目中,然后对连续条目执行完全相同的操作。我哪里做错了?相关代码如下:

public class MainActivity extends Activity {

public Elements beer;
public ArrayList<String> beerList = new ArrayList<String>();
private ArrayAdapter<String> adapter;
private ListView lv;

@Override
protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    lv = (ListView) findViewById(R.id.listView1);
    new NewThread().execute();
    adapter = new ArrayAdapter<String>(this, R.layout.simple_list_item_1, R.id.beer_name, beerList);
}

public class NewThread extends AsyncTask<String, Void, String> {

    @Override
    protected String doInBackground(String... arg) {

        Document doc;
        try {
            doc = Jsoup.connect("URLURLURLURL").userAgent("Mozilla/5.0 (Windows NT 6.1; WOW64; rv:5.0) Gecko/20100101 Firefox/5.0").get();

            beer = doc.select("a[href*=URL.com/URL/]"); 
            beerList.clear();
            for (Element beers : beer) {
                beerList.add(beer.text());
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }

    @Override
    protected void onPostExecute(String result) {

        lv.setAdapter(adapter);
    }
}
    }
公共类MainActivity扩展活动{
公共元素啤酒;
public ArrayList beerList=新的ArrayList();
专用阵列适配器;
私有ListView lv;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
lv=(ListView)findViewById(R.id.listView1);
新建NewThread().execute();
适配器=新阵列适配器(此,R.layout.simple\u list\u item\u 1,R.id.beer\u name,beerList);
}
公共类NewThread扩展异步任务{
@凌驾
受保护的字符串doInBackground(字符串…arg){
文件文件;
试一试{
doc=Jsoup.connect(“urlurl”).userAgent(“Mozilla/5.0(Windows NT 6.1;WOW64;rv:5.0)Gecko/20100101 Firefox/5.0”).get();
beer=doc.select(“a[href*=URL.com/URL/]);
beerList.clear();
用于(元素啤酒:啤酒){
beerList.add(beer.text());
}
}捕获(IOE异常){
e、 printStackTrace();
}
返回null;
}
@凌驾
受保护的void onPostExecute(字符串结果){
低压设置适配器(适配器);
}
}
}
我目前得到的东西的视觉表现:

  • 第1项第2项第3项第4项第5项
  • 第1项第2项第3项第4项第5项
  • 第1项第2项第3项第4项第5项
  • 第1项第2项第3项第4项第5项
  • 第1项第2项第3项第4项第5项
与我想要得到的相比:

  • 项目1
  • 项目2
  • 项目3
  • 项目4
  • 项目5
非常感谢

activity_main.xml:
         <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity" >

    <ListView
        android:id="@+id/listView1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true" >
    </ListView>

</RelativeLayout>
activity_main.xml:
简单列表项1.xml:

         <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <TextView android:id="@+id/beer_name"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:padding="10dip"
        android:textSize="16dip"
        android:textStyle="bold"/>    

</LinearLayout>

更改

for (Element beers : beer) {
                    beerList.add(beer.text());
                }

你错过了啤酒中的s

试试这个

  public class MainActivity extends Activity {

    public Elements beer;
    public ArrayList<String> beerList = new ArrayList<String>();
    private ArrayAdapter<String> adapter;
private ListView lv;

@Override
protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    lv = (ListView) findViewById(R.id.listView1);
    new NewThread().execute();
    adapter = new ArrayAdapter<String>(this, R.layout.simple_list_item_1, R.id.beer_name, beerList);
}

public class NewThread extends AsyncTask<String, Void, String> {

    @Override
    protected String doInBackground(String... arg) {

        Document doc;
        try {
            doc = Jsoup.connect("URLURLURLURL").userAgent("Mozilla/5.0 (Windows NT 6.1; WOW64; rv:5.0) Gecko/20100101 Firefox/5.0").get();

            beer = doc.select("a[href*=URL.com/URL/]"); 
            beerList.clear();
            for (Element beers : beer) {
                beerList.add(beers.text()+"\n");
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }

    @Override
    protected void onPostExecute(String result) {

        lv.setAdapter(adapter);
    }
}
    }
公共类MainActivity扩展活动{
公共元素啤酒;
public ArrayList beerList=新的ArrayList();
专用阵列适配器;
私有ListView lv;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
lv=(ListView)findViewById(R.id.listView1);
新建NewThread().execute();
适配器=新阵列适配器(此,R.layout.simple\u list\u item\u 1,R.id.beer\u name,beerList);
}
公共类NewThread扩展异步任务{
@凌驾
受保护的字符串doInBackground(字符串…arg){
文件文件;
试一试{
doc=Jsoup.connect(“urlurl”).userAgent(“Mozilla/5.0(Windows NT 6.1;WOW64;rv:5.0)Gecko/20100101 Firefox/5.0”).get();
beer=doc.select(“a[href*=URL.com/URL/]);
beerList.clear();
用于(元素啤酒:啤酒){
添加(beers.text()+“\n”);
}
}捕获(IOE异常){
e、 printStackTrace();
}
返回null;
}
@凌驾
受保护的void onPostExecute(字符串结果){
低压设置适配器(适配器);
}
}
}

你能想象一下吗?图片或只是你想要的和你得到的格式。在底部添加一些东西。希望这有帮助!我相信beer.text()就是问题所在。请尝试ownText()(随意猜测),如果这不起作用,请发布实际数据,以便我可以为您提供一个工作示例。很抱歉,响应太晚。我在哪里放置自己的文本?我已经使用了一些组合,但语法似乎仍然不正确。你能发布一些数据样本吗?我想要你解析的东西(html)。只是一个样本,甚至是伪造的数据,但格式相同。这不是你的错吗?这只是一个小错误,比如打字错误……你在啤酒里错过了s
  public class MainActivity extends Activity {

    public Elements beer;
    public ArrayList<String> beerList = new ArrayList<String>();
    private ArrayAdapter<String> adapter;
private ListView lv;

@Override
protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    lv = (ListView) findViewById(R.id.listView1);
    new NewThread().execute();
    adapter = new ArrayAdapter<String>(this, R.layout.simple_list_item_1, R.id.beer_name, beerList);
}

public class NewThread extends AsyncTask<String, Void, String> {

    @Override
    protected String doInBackground(String... arg) {

        Document doc;
        try {
            doc = Jsoup.connect("URLURLURLURL").userAgent("Mozilla/5.0 (Windows NT 6.1; WOW64; rv:5.0) Gecko/20100101 Firefox/5.0").get();

            beer = doc.select("a[href*=URL.com/URL/]"); 
            beerList.clear();
            for (Element beers : beer) {
                beerList.add(beers.text()+"\n");
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }

    @Override
    protected void onPostExecute(String result) {

        lv.setAdapter(adapter);
    }
}
    }