【问题标题】:Uploading photos from website to android app将照片从网站上传到安卓应用
【发布时间】:2013-04-20 15:05:08
【问题描述】:

我正在尝试使用 AsyncTask、ListView 和 Jsoup 从网站检索照片到我的 android 应用程序中。在 2 个类之间存在一些困难(一个扩展 Activity,另一个扩展 AsyncTask)这是我的主要活动:

public class MainActivity extends Activity{

       private ListView listView;
private ArrayAdapter adapter;
private ArrayList list;
@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.listview);
     listView = (ListView) findViewById( R.id.listview); 
     list = new ArrayList();
      adapter = new ArrayAdapter(this,
            android.R.layout.simple_list_item_1, list);

        listView.setAdapter(adapter);
        new LoadImages(list, adapter).execute();

}

这是 AsyncTask 类:

public class LoadImages extends AsyncTask {

private ArrayAdapter adapter;

私有ArrayList列表;

public LoadImages(ArrayList list, Adapter adapter)
{
    this.list = list;
    this.adapter = (ArrayAdapter) adapter;
}

protected void onPostExecute(Elements divs) {
    // TODO Auto-generated method stub
    super.onPostExecute(divs);
     for (org.jsoup.nodes.Element div : divs)
     {   
        list.add(div);
    }
    adapter.notifyDataSetChanged();

}

@Override
protected Object doInBackground(Object... params) {
    Document doc = null;

    try {


    doc = (Document) Jsoup.connect("http://mongol.co.il/").get();
    Elements divs =((Elements) doc).select("img[src$=.jpg]");


     } catch (IOException e1) {

    e1.printStackTrace(); }
    return null;



}

}

【问题讨论】:

  • list 是您要在ListView 中显示的数据。

标签: java android listview android-asynctask jsoup


【解决方案1】:

你的 MainActivity.java 应该是

public class MainActivity extends Activity
{
    private ListView listView;
    private ArrayAdapter adapter;
    private ArrayList list;

    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.listview);
        listView = (ListView) findViewById(R.id.listview);
        list = new ArrayList();
        adapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1, list);
        listView.setAdapter(adapter);
        new LoadImages(list, adapter).execute();
    }
}

你的 AsyncTask 类应该是

public class LoadImages extends AsyncTask
{
    private ArrayAdapter adapter;
    private ArrayList list;

    public LoadImages(ArrayList list, Adapter adapter)
    {
        this.list = list;
        this.adapter = adapter;
    }

    @Override
    protected void onPostExecute(Elements divs)
    {
        super.onPostExecute(result);
        for ( org.jsoup.nodes.Element div : divs )
        {
            list.add(div);
        }
        adapter.notifyDataSetChanged();
    }

    @Override
    protected Void doInBackground(Void... params)
    {
        Document doc = null;
        try
        {
            doc = (Document) Jsoup.connect("http://mongol.co.il/").get();
            return  ((Elements) doc).select("img[src$=.jpg]");
        }
        catch (IOException e1)
        {
            e1.printStackTrace();
        }
        return null;
    }
}

注意:return ((Elements) doc).select("img[src$=.jpg]"); 行中有 ClassCastException。解决方案仅是从后台线程更新列表视图,而不是针对使用 logcat 错误编辑的问题(请参阅下面的评论以进行澄清)。

【讨论】:

  • 如何将“列表”从一个类传递到另一个类?
  • @Avi2107 请恢复您上次的编辑。所以其他用户会准确地找到问题。你说应用程序崩溃了。所以我问你用错误日志更新问题
  • 错误在 LoadImages.java 的第 42 行。在不同数据类型之间转换时出错。第 42 行是哪一行?
  • doc = (Document) Jsoup.connect("mongol.co.il/").get(); 这是 LoadImages.java 的第 42 行
  • 问题出在这一行 ((Elements) doc).select("img[src$=.jpg]");因为我们正在尝试将 Document 转换为数据类型 Elements。您可以尝试自己清除它,也可以打开一个带有错误的新问题。因为我不知道 jsoup,而且讨论的时间很长。
【解决方案2】:

尝试在适配器的 imageviewHolder 上执行此操作:

Connect.loadBitmap( 0, "http://www.saudeanimal.com.br/imagens/suricate06.jpg",
                new BitmapLoadListener() {
                    @Override
                    public void onLoadListener( int id, Bitmap bitmap ) {
                        if( bitmap != null ) {
                            tableBean.setImg( bitmap );
                            notifyDataSetChanged();
                        }
                    }
                } );

【讨论】:

    猜你喜欢
    • 2016-04-23
    • 2012-05-26
    • 1970-01-01
    • 2011-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-25
    • 2014-09-23
    相关资源
    最近更新 更多