簡體   English   中英

如何用 ArrayList 替換 String[]?

[英]How do I replace a String[ ] with a ArrayList?

我正在嘗試使用 picasso 用圖像填充我的 gridview。 我正在使用 jsoup 來收集圖像鏈接並將它們放入一個 ArrayList 中。 我的 ImageAdapter 有問題,導致我啟動應用程序時沒有加載任何圖像。 我的日志顯示正在收集的鏈接,以便工作。 任何幫助將不勝感激。 我正在發布活動的整個代碼。

   public class MainActivity extends Activity
  {GridView grid;
String url="http://dstreet.site/";
String link,title,src;
ArrayList list= new ArrayList();



   @Override
   protected void onCreate(Bundle savedInstanceState)
   {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    Scrapper();
    grid = (GridView)findViewById(R.id.grid);
    grid.setAdapter(new ImageAdapter(this, list));


    }


public class ImageAdapter extends BaseAdapter {


    ArrayList list;
    private LayoutInflater inflater;

    Context c;
     int mCount;

    ImageAdapter(Context context, ArrayList list) {
        inflater = LayoutInflater.from(context);
        c = context;

        mCount = list.size();
        this.list=list;

    }

    @Override
    public int getCount() {
        return mCount;
    }

    @Override
    public Object getItem(int position) {
        return true; 
    }

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

    @Override
    public View getView(int position, View 
    convertView, ViewGroup parent) {
        final ViewHolder holder;
        View view = convertView;
        if (view == null) {
            view = inflater.inflate(R.layout.img, parent, 
       false);
            holder = new ViewHolder();
            assert view != null;

            holder.imageView = (ImageView) 
      view.findViewById(R.id.image);


            view.setTag(holder);
        } else {
            holder = (ViewHolder) view.getTag();
        }

        Picasso.get()
            .load(list.get(position))
            .placeholder(R.drawable.ic_launcher)
            .error(R.drawable.ic_launcher)
            .fit()
            .into(holder.imageView, new Callback() {

                @Override
                public void onError(Exception p1)

    {holder.imageView.setVisibility(View.INVISIBLE);
                    // TODO: Implement this method
                }


                @Override
                public void onSuccess() {

   holder.imageView.setVisibility(View.VISIBLE);
                    }


            });

        return view;
    }
}

static class ViewHolder {
    ImageView imageView;

}
public void Scrapper()
{
    Content content= new Content();
    content.execute();
}

public class Content extends 
   AsyncTask<Void,Void,Void>
{

    @Override
    protected Void doInBackground(Void[] p1)
    {
        // TODO: Implement this method

        try
        {
            Document doc = Jsoup.connect(url).get();
            // Identify Table Class "worldpopulation"
            for (Element table : 
     doc.select("div[class=poster]")) {

                Elements imgSrc = 
   table.select("img[src]");
                // Get only src from img src
                src = imgSrc.attr("src");
                list.add(src);
            }







            Log.d("image links",list.toString());
        }
        catch (IOException e)
        {e.printStackTrace();


        }
        return null;


    }

}}

如果要將 String[] 替換為 ArrayList,則需要使用 ArrayList.get(position) 而不是 IMAGE_URLS [position]。

在查詢表格以獲取圖像后,您似乎沒有迭代元素:

for (Element table : doc.select("div[class=poster]")) {

    Elements imgSrc = table.select("img[src]");
    src = imgSrc.attr("src");
    list.add(src);

}

像這樣的事情應該這樣做:

doc.select("div[class=poster]")               // get list of div
   .stream()                                  // for each div
   .map(table -> table.select("img[src]"))    // find all images
   .flatmap(Elements::stream)                 // collapse images into 1 list
   .map(imgSrc -> imgSrc.attr("src"))         // for each image
   .forEach(list::add);                       // add to Collection

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM