如何使用毕加索图书馆

时间:2014-08-17 09:30:17

标签: android json android-asynctask picasso

如何使用picasso library加载图片? 我已经尝试了,但它在我的屏幕上显示force close。我刚补充一下:

ImageView a = (ImageView)findViewById(R.id.ivImage);
Picasso.with(Home.this).load(TAG_IMAGE).into(a);  

在我的onPostExecute()上,我正在从服务器加载我的图像。

3 个答案:

答案 0 :(得分:0)

为此,您必须编写自定义适配器。

请参阅this link以了解如何在自定义适配器中使用Picasso。

要了解customAdapter(),请参阅this link

答案 1 :(得分:0)

创建新类并根据需要为其命名(此处为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);

希望这个答案可以帮到你。如果您在实施此问题时遇到问题,请告诉我。

快乐的编码......

答案 2 :(得分:0)

首先,您必须获得Picasso实例

val picasso = Picasso.get()

然后可以加载一行代码。

picasso.load("your url").into(imageView)

作为参考,请点击以下链接-https://www.androidbytes.in/image-loading-in-android-with-picasso/