Как пользоваться библиотекой Пикассо

Как я могу загрузить изображение с помощью picasso library? Я уже пробовал, но на моем экране отображается force close. Я только что добавил это:

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

На моем onPostExecute() я загружаю свое изображение с сервера.


person renzvader    schedule 17.08.2014    source источник
comment
Ваш ImageView находится на activity_home.xml?   -  person Paritosh    schedule 17.08.2014


Ответы (3)


Для этого вам нужно написать собственный адаптер.

Перейдите по этой ссылке, чтобы узнать, как использовать Picasso в своем пользовательском адаптере.

Чтобы узнать о customAdapter(), см. эта ссылка

person Paritosh    schedule 17.08.2014
comment
Используйте свой оператор Picasso.with()... там. - person Paritosh; 17.08.2014
comment
Обратитесь по ссылке в обновленном ответе. Проверьте CustomListAdapter.java на странице. - person Paritosh; 17.08.2014
comment
Пожалуйста, спросите, если вы не понимаете логику BaseAdapter. - person Paritosh; 17.08.2014
comment
Да, вам нужно создать объект CustomListAdapter, например CustomListAdapter adapterObj = new CustomListAdapter (getActivity(), dataList); -- getActivity() , dataList являются параметрами. - person Paritosh; 17.08.2014
comment
Вы храните изображение в базе данных? В этом случае невозможно получить изображение с помощью Picasso. Вы должны хранить изображение в виде файла на вашем сервере. Сохраните путь к вашему изображению в базе данных. - person Paritosh; 17.08.2014
comment
передать полный путь к изображению для загрузки(), например. Picasso.with(context).load(example.com/imgFolder/imageName.png ).в(изображение); это будет работать - person Paritosh; 18.08.2014
comment
Вы можете разделить строку как basePath - путь вашего сайта, например. www.example.com Опять же, вы можете использовать TAG_IMAGE — путь к изображению, хранящемуся в вашей базе данных. В моем напр. Ниже я делаю то же самое. Я сохраняю basePath и просто передаю imagePath в HashMap - person Paritosh; 19.08.2014

Создайте новый класс и назовите его как хотите (здесь 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);

Надеюсь, этот ответ поможет вам. Пожалуйста, дайте мне знать, если у вас возникли проблемы с реализацией этого.

Удачного кодирования...

person Paritosh    schedule 17.08.2014

Сначала вам нужно получить экземпляр Picasso.

val picasso = Picasso.get()

а затем вы можете загрузить с помощью одной строки кода.

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

Для справки перейдите по этой ссылке - https://www.androidbytes.in/image-loading-in-android-with-picasso/

person honey_ramgarhia    schedule 09.11.2018