[英]Unable to load image from Firebase Database using an URL with Picasso
[英]Unable to load Array List of image URLs from Picasso using Recycler View Adapter. But directly able to load from Url string
我正在使用 Jsoup 解析來自網站的漫畫圖像並將它們放入回收站視圖以顯示它們,但圖像無法加載。 pasing漫畫圖片鏈接的網頁鏈接在這里: https://mangaeffect.com/manga/strongest-abandoned-son-2/chapter-1/
DisplayActivity.java
'''
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_display);
chTextView=findViewById(R.id.chapterTextView);
recyclerView = findViewById(R.id.displayImageRecyclerView);
displayChapterAdapter = new DisplayChapterAdapter(displayChapterModelArrayList,DisplayActivity.this);
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(DisplayActivity.this,LinearLayoutManager.VERTICAL,false);
recyclerView.setLayoutManager(linearLayoutManager);
recyclerView.setAdapter(displayChapterAdapter);
DisplayTask displayTask = new DisplayTask();
displayTask.execute();
}
public class DisplayTask extends AsyncTask<Void, Void, Void> {
@Override
protected void onPreExecute() {
super.onPreExecute();
displayChapterModelArrayList.clear();
}
@Override
protected void onPostExecute(Void unused) {
super.onPostExecute(unused);
displayChapterAdapter.notifyDataSetChanged();
chTextView.setText(chx);
}
@Override
protected void onCancelled() {
super.onCancelled();
}
@Override
protected Void doInBackground(Void... voids) {
String imgUrl = getIntent().getStringExtra("contentUrl");
try {
Document data = Jsoup.connect(imgUrl).get();
chx = data.select(".container > .row").select(".sidebar-hidden.col-sm-12.col-md-12.main-col")
.select("#chapter-heading").text();
} catch (IOException e) {
e.printStackTrace();
}
try {
Document data = Jsoup.connect(imgUrl).get();
Elements x = data.select(".reading-content").select(".page-break");
String chapterSrc = data.select(".reading-content").select(".page-break").select("img").attr("data-src");
Log.i("src: ",displayChapterModelArrayList.get(0).getImgUrl());
displayChapterModelArrayList.add(new DisplayChapterModel(chapterSrc));
for(Element i:x){
String chapterSrc = i.select("img").attr("data-src");
str.add((String)chapterSrc);
displayChapterModelArrayList.add(new DisplayChapterModel(chapterSrc));
}
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
}
'''
DisplayChapterModel.java
'''
public DisplayChapterModel(String imgUrl) {
this.imgUrl = imgUrl;
}
public String getImgUrl() {
return imgUrl;
}
public void setImgUrl(String imgUrl) {
this.imgUrl = imgUrl;
}
'''
DisplayChapterAdapter.java ''' ArrayList displayChapterModelArrayList; 語境語境;
public DisplayChapterAdapter(ArrayList<DisplayChapterModel> displayChapterModelArrayList, Context context) {
this.displayChapterModelArrayList = displayChapterModelArrayList;
this.context = context;
}
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(context).inflate(R.layout.recycler_view_image_layout, parent, false);
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
DisplayChapterModel displayChapterModel = displayChapterModelArrayList.get(position);
String str =displayChapterModel.getImgUrl();
Picasso.get().load(str).error(R.drawable.ic_baseline_image_24).into(holder.imgUrl);
Log.i(" jdfgjkdf: ", str);
}
@Override
public int getItemCount() {
return displayChapterModelArrayList.size();
}
public class ViewHolder extends RecyclerView.ViewHolder {
ImageView imgUrl;
public ViewHolder(@NonNull View itemView) {
super(itemView);
imgUrl = itemView.findViewById(R.id.cardImageViewX);
}
}
'''
Output 使用直接鏈接的圖像:喜歡,displayChapterModelArrayList.add(new DisplayChapterModel([鏈接]“https://mangaeffect.com/wp-content/uploads/WP-manga/data/manga_612dbbc700b22/10bbb81546c3c21c7c39ccf516a706a0/1.jpg”)) ;
[1] https://i.stack.imgur.com/X1EYS.png
Output 帶有數組列表鏈接的圖像: [2] https://i.stack.imgur.com/BFiJg.png
請幫忙!!!
我覺得問題在於您在獲取數據時正在更新本地 ArrayList,但是您傳遞給適配器的數據沒有得到更新。
所以我建議您改為將以下方法添加到您的適配器中。 像這樣的東西
public void addImages(ArrayList<DisplayChapterModel> imgList) {
displayChapterModelArrayList.clear();
displayChapterModelArrayList.addAll(imgList);
notifyDataSetChanged();
}
在你的活動中,你將圖像存儲在本地數組中,然后onPostExecute
做這樣的事情
@Override
protected void onPostExecute(Void unused) {
super.onPostExecute(unused);
displayChapterAdapter.addImages(displayChapterModelArrayList);
chTextView.setText(chx);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.