如何使用毕加索图书馆
Posted
技术标签:
【中文标题】如何使用毕加索图书馆【英文标题】:How to use Picasso Library 【发布时间】:2014-10-10 11:01:57 【问题描述】:如何使用picasso library
加载图像?
我已经尝试过了,但它在我的屏幕上显示force close
。我刚刚添加了这个:
ImageView a = (ImageView)findViewById(R.id.ivImage);
Picasso.with(Home.this).load(TAG_IMAGE).into(a);
在我的onPostExecute()
上,我正在从服务器加载我的图像。
【问题讨论】:
您的 ImageView 是否位于 activity_home.xml 上? 【参考方案1】:为此,您必须编写自定义适配器。
请参阅this link 以了解如何在您的自定义适配器中使用毕加索。
要了解 customAdapter(),请参考 this link
【讨论】:
在此处使用您的 Picasso.with()... 语句。 参考更新答案中的链接。检查页面上的 CustomListAdapter.java。 如果您没有得到BaseAdapter的逻辑,请询问。 是的,您必须创建 CustomListAdapter 的对象,例如 CustomListAdapter adapterObj = new CustomListAdapter (getActivity(), dataList); -- getActivity() , dataList 是参数。 您是否将图像存储在数据库中?在这种情况下,无法使用 Picasso 获取图像。您必须将图像作为文件存储在服务器上。在数据库中存储图像的路径。【参考方案2】:创建新类并将其命名为您想要的任何名称(此处为 AlbumList_Adapter.java)
public class AlbumList_Adapter extends BaseAdapter
private Activity activity;
private ArrayList<HashMap<String, String>> data;
private static LayoutInflater inflater = null;
public ImageLoader imageLoader;
String basePath = "http://example.com/imgFolder/";
public AlbumList_Adapter(Activity a, ArrayList<HashMap<String, String>> d)
activity = a;
data = d;
inflater = (LayoutInflater) activity
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
imageLoader = new ImageLoader(activity.getApplicationContext());
public int getCount()
return data.size();
public Object getItem(int position)
return position;
public long getItemId(int position)
return position;
public View getView(int position, View convertView, ViewGroup parent)
View vi = convertView;
if (convertView == null)
vi = inflater.inflate(R.layout.list_row_simple, null);
TextView txtListItem = (TextView) vi.findViewById(R.id.txtListItem);
ImageView imageView= (ImageView) vi.findViewById(R.id.imageView);
HashMap<String, String> imgData = new HashMap<String, String>();
imgData = data.get(position);
txtListItem.setText(imgData.get("name"));
Picasso.with(context)
.load(basePath+ imgData.get("image"))
.resize(100, 100)
.centerCrop()
.into(imageView);
return vi;
在您的 code.java 文件中,在顶部声明适配器(在 onCreate() 之前,以便您可以在任何地方使用它)
AlbumList_Adapter adapter;
在你的json解析后的代码中
ArrayList<HashMap<String, String>> dataList = new ArrayList<HashMap<String, String>>();
// looping through all nodes
for (int i = 0; i < jsonArray.length(); i++)
jsonObject = jsonArray.getJSONObject(i);
// creating new HashMap
HashMap<String, String> map = new HashMap<String, String>();
// adding each child node to HashMap
map.put("name", jsonObject.getString("albumName"));
map.put("image", jsonObject.getString("albumImage"));
// adding HashMap to ArrayList
dataList.add(map);
adapter = new AlbumList_Adapter(codeActivity.this, dataList);
list.setAdapter(adapter);
请注意,我使用的是 Hashmap。你应该使用你的数据结构。 (你可以使用Hashmap。然后你必须更新你的代码)
还有一点,AlbumList_Adapter.java 中的以下行引用了我为列表行创建的 xml 文件。
vi = inflater.inflate(R.layout.list_row_simple, null);
希望这个答案对您有所帮助。如果您在执行此操作时遇到问题,请告诉我。
编码愉快...
【讨论】:
【参考方案3】:首先你必须得到毕加索实例
val picasso = Picasso.get()
然后你可以用一行代码加载。
picasso.load("your url").into(imageView)
请点击此链接作为参考 - https://www.androidbytes.in/image-loading-in-android-with-picasso/
【讨论】:
以上是关于如何使用毕加索图书馆的主要内容,如果未能解决你的问题,请参考以下文章