2015-04-01 44 views
0

AI再次出现一些问题))用jsoup解析图像

我有一个解析来自文件的链接的代码。进入文件我有一些链接到论坛踩点。就像这样:

http://vao-priut.org/image/cherepashka-metis-gollandskoi-ovcharki-s-72 http://vao-priut.org/image/taiga-s-26

我尝试用这个代码来解析图片:

class ParseMyPageTask extends AsyncTask<String, Void, String> { 

    @Override 
    protected String doInBackground(String... params) { 
     try { 
      input = new URL("https://gist.githubusercontent.com/akhorevich/5b849373dc9abaf921b3/raw/18e79ab6a0c0be007a2a4590e4e176184ced311a/links"); 

      sc = new Scanner(input.openStream()); 
      while(sc.hasNextLine()){ 
       String link = sc.nextLine(); 

       doc = Jsoup.connect(link).get(); 
       Elements names = doc.select("div.node-title"); 
       // Elements images = doc.select("div.node div.content img"); 
       Elements imgs = doc.select("div.node div.content img"); 

       for (Element img : imgs) { 

        Element myImage = img; 
        String imgSrc = myImage.attr("src"); 
        InputStream inp = new java.net.URL(imgSrc).openStream(); 
        // Decode Bitmap 
        bitmap = BitmapFactory.decodeStream(inp); 
       } 


       for(Element name: names) { 
        mData.add(name.text()); 

       } 

       if(mData.size() == 0) { 
        mData.add("Empty result"); 
       } 

      } 



     } catch (IOException e) { 
      e.printStackTrace(); 
      mData.clear(); 
      mData.add("Exception: " + e.toString()); 
     } 
     return text; // получаем весь текст 
    } 

    @Override 
    protected void onPostExecute(String result) { 
     super.onPostExecute(result); 

     sectorC_adapter = new SectorC_Adapter(getActivity()); 
     mListView.setAdapter(sectorC_adapter); 

    } 
} 

但它只能从最后一个环节解析图像,并将其添加到所有项目。我如何制作一些图像缓冲阵列或类似的东西?谢谢!!!

P.S.我忘记了我的BaseAdapter:

class SectorC_Adapter extends BaseAdapter{ 
    private Context c; 

    SectorC_Adapter(Context c){ 
     this.c = c; 
    } 
    @Override 
    public int getCount() { 
     return mData.size(); 
    } 

    @Override 
    public Object getItem(int position) { 
     return mData.get(position); 
    } 

    @Override 
    public long getItemId(int position) { 
     return position; 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     if (convertView==null){ 
      inflater = (LayoutInflater)c 
        .getSystemService(c.LAYOUT_INFLATER_SERVICE); 
      row = inflater.inflate(R.layout.sector_row, parent,false); 
     }else { 
      row = convertView; 
     } 
     tvInfo = (TextView)row.findViewById(R.id.dog_name); 
     tvInfo.setText(mData.get(position).toString()); 
     dog_view = (ImageView)row.findViewById(R.id.dog_view); 
     dog_view.setImageBitmap(bitmap); 
     return row; 
    } 
} 

回答

1

在这里您不添加您的图像任何列表

  for (Element img : imgs) { 

       Element myImage = img; 
       String imgSrc = myImage.attr("src"); 
       InputStream inp = new java.net.URL(imgSrc).openStream(); 
       // Decode Bitmap 
       bitmap = BitmapFactory.decodeStream(inp); 

       ///HERE YOU SHOULD ADD YOUR BITMAP TO ALL ELEMENTS 
       ///eg. allImages.add(bitmap); or whatever. 
      } 

我想这bitmap是某种字段,添加到您的all elements所以basicly只最后的状态将被存储。你必须做的是在for-loop里添加你的位图。

+0

谢谢。我忘了提及我有一个自定义的BaseAdapter,它将解析的信息加载到ListView中。也许我在它有一些错误... – 2015-04-01 09:10:26

+0

它的工作,但现在我有另一个问题 - 它解析来自第一个链接的所有照片。 – 2015-04-01 19:00:10

+0

你只存储了一个所有人的图像。 – Antoniossss 2015-04-01 19:03:42