[英]How do I replace a single word in a String variable with an element in an ArrayList?
[英]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.