毕加索图书馆的错误
Error with Picasso library in
我尝试在 Picasso 中使用 RecyclerView 显示 ArrayList,但 Picasso 出现问题。
如何将数据从 ArrayList 加载到 Picasso?
这是适配器
public class ImageViewAdapter extends RecyclerView.Adapter<ImageViewAdapter.ViewHolder> {
List<ImagesModule> imagesModules;
Context context;
public ImageViewAdapter(List<ImagesModule> imagesModules, Context context){
super();
this.imagesModules = imagesModules;
this.context = context;}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View v = LayoutInflater.from( parent.getContext() ).inflate( R.layout.imageitem, parent,false );
ViewHolder viewHolder = new ViewHolder( v );
return viewHolder;}
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
final ImagesModule imagesModule = imagesModules.get( position );
Picasso.with(context).load(String.valueOf(imagesModule.getAllimage()).into(holder.appImage));
}
@Override
public int getItemCount() {
return imagesModules.size();
}
class ViewHolder extends RecyclerView.ViewHolder {
public ImageView appImage;
public ViewHolder(View itemView) {
super( itemView );
appImage = (ImageView) itemView.findViewById( R.id.appimages);
}}
这是模块
public class ImagesModule
{
public List<String> getAllimage() {
return Allimage;}
public void setAllimage(List<String> allimage) {
Allimage = allimage;}
List<String> Allimage = new ArrayList<String>();
}
在这里我得到 JSON 并将其添加到 ArrayList
JSONArray jsonArray = response.getJSONObject("feed").getJSONArray("entry");
for (int i = 0; i < jsonArray.length(); i++) {
JSONArray imageArray = response.getJSONObject("feed").getJSONArray("entry").getJSONObject(i).getJSONArray("im:image");
List<String> allimage = new ArrayList<String>();
for (int j=0; i<imageArray.length(); j++) {
JSONObject actor = imageArray.getJSONObject(i);
String name = actor.getString("label");
allimage.add(name);
imagesModule.setAllimage(allimage);
}
您需要获取一张图片 URL 才能加载到 Picasso,您无法加载列表。
另外,这个class基本上就是一个List,就当做一个吧。
public class ImagesModule extends ArrayList<String> {
}
解析 - 两个选项,一个模块用于所有图像,或者以某种方式处理每个条目数据点一个模块
// TODO: Determine if you want one 'master' module for all the images
ImagesModule module = new ImagesModule();
JSONArray jsonArray = response.getJSONObject("feed").getJSONArray("entry");
for (int i = 0; i < jsonArray.length(); i++) {
// TODO: Determine if you want one module 'per entry'
/*** ImagesModule module = new ImagesModule(); ***/
JSONArray imageArray = jsonArray.getJSONObject(i).getJSONArray("im:image");
for (int j=0; i<imageArray.length(); j++) {
JSONObject actor = imageArray.getJSONObject(i);
String name = actor.getString("label");
module.add(name); // TODO: Actually get an image, not an actor probably...
}
现在,您可以将该字符串加载到 Picasso
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
final ImagesModule imagesModule = imagesModules.get( position );
final String img = imagesModule.get(position);
Picasso.with(context).load(img).into(holder.appImage));
}
在 onBindViewHolder()
中使用以下代码
Picasso.with(context).load(imagesModule.getAllimage().get(position).into(holder.appImage);
我尝试在 Picasso 中使用 RecyclerView 显示 ArrayList,但 Picasso 出现问题。
如何将数据从 ArrayList 加载到 Picasso?
这是适配器
public class ImageViewAdapter extends RecyclerView.Adapter<ImageViewAdapter.ViewHolder> {
List<ImagesModule> imagesModules;
Context context;
public ImageViewAdapter(List<ImagesModule> imagesModules, Context context){
super();
this.imagesModules = imagesModules;
this.context = context;}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View v = LayoutInflater.from( parent.getContext() ).inflate( R.layout.imageitem, parent,false );
ViewHolder viewHolder = new ViewHolder( v );
return viewHolder;}
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
final ImagesModule imagesModule = imagesModules.get( position );
Picasso.with(context).load(String.valueOf(imagesModule.getAllimage()).into(holder.appImage));
}
@Override
public int getItemCount() {
return imagesModules.size();
}
class ViewHolder extends RecyclerView.ViewHolder {
public ImageView appImage;
public ViewHolder(View itemView) {
super( itemView );
appImage = (ImageView) itemView.findViewById( R.id.appimages);
}}
这是模块
public class ImagesModule
{
public List<String> getAllimage() {
return Allimage;}
public void setAllimage(List<String> allimage) {
Allimage = allimage;}
List<String> Allimage = new ArrayList<String>();
}
在这里我得到 JSON 并将其添加到 ArrayList
JSONArray jsonArray = response.getJSONObject("feed").getJSONArray("entry");
for (int i = 0; i < jsonArray.length(); i++) {
JSONArray imageArray = response.getJSONObject("feed").getJSONArray("entry").getJSONObject(i).getJSONArray("im:image");
List<String> allimage = new ArrayList<String>();
for (int j=0; i<imageArray.length(); j++) {
JSONObject actor = imageArray.getJSONObject(i);
String name = actor.getString("label");
allimage.add(name);
imagesModule.setAllimage(allimage);
}
您需要获取一张图片 URL 才能加载到 Picasso,您无法加载列表。
另外,这个class基本上就是一个List,就当做一个吧。
public class ImagesModule extends ArrayList<String> {
}
解析 - 两个选项,一个模块用于所有图像,或者以某种方式处理每个条目数据点一个模块
// TODO: Determine if you want one 'master' module for all the images
ImagesModule module = new ImagesModule();
JSONArray jsonArray = response.getJSONObject("feed").getJSONArray("entry");
for (int i = 0; i < jsonArray.length(); i++) {
// TODO: Determine if you want one module 'per entry'
/*** ImagesModule module = new ImagesModule(); ***/
JSONArray imageArray = jsonArray.getJSONObject(i).getJSONArray("im:image");
for (int j=0; i<imageArray.length(); j++) {
JSONObject actor = imageArray.getJSONObject(i);
String name = actor.getString("label");
module.add(name); // TODO: Actually get an image, not an actor probably...
}
现在,您可以将该字符串加载到 Picasso
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
final ImagesModule imagesModule = imagesModules.get( position );
final String img = imagesModule.get(position);
Picasso.with(context).load(img).into(holder.appImage));
}
在 onBindViewHolder()
Picasso.with(context).load(imagesModule.getAllimage().get(position).into(holder.appImage);