安卓 |如何使用 Picasso 将一些图片加载到 SliderView 中?

问题描述

我使用库在带有 Picasso 的 MysqL 数据库显示 SliderView 中的图片,但是当我尝试通过从数据库中连续获取五张图片显示它来应用它时,它只显示第一张图片(pic1 )

我的数据库表(图片)如下:

id | product_id |  pic1  |  pic2  |  pic3  |  pic4  |  pic5
 1 |     5      |  p.jpg |  d.jpg |  h.jpg |  j.jpg |  o.jpg

你可以在下面看到我的代码

滑块适配器类:

import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;

import com.smarteist.autoimageslider.SliderViewAdapter;
import com.squareup.picasso.Picasso;

import java.util.List;


public class PictureSliderAdapter extends SliderViewAdapter<PictureSliderAdapter.Holder> {

List<Pictures> pictures;

public PictureSliderAdapter(List<Pictures> pic) {
    pictures = pic;
}

@Override
public Holder onCreateViewHolder(ViewGroup parent) {
    View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.pictures_layout,parent,false);
    return new Holder(view);
}

@Override
public void onBindViewHolder(Holder viewHolder,int position) {
    Pictures pic = pictures.get(position);
    String[] picPath = new String[]{pic.getPic1(),pic.getPic2()};

    Picasso.get().load(Config.image_address + pic.getPic1()).into(viewHolder.imgPic);
}

@Override
public int getCount() {
    return pictures.size();
}

public class Holder extends SliderViewAdapter.ViewHolder {
    ImageView imgPic;

    public Holder(View itemView) {
        super(itemView);

        imgPic = itemView.findViewById(R.id.imgPic);
    }
}
}

(我尝试将图片路径放在 String Array 中,但没有解决我的问题)

我有一个用于设置和获取图片路径的类:

public class Pictures {
private String pic1;
private String pic2;
private String pic3;
private String pic4;
private String pic5;

public Pictures(String pic1,String pic2,String pic3,String pic4,String pic5) {
    this.setPic1(pic1);
    this.setPic2(pic2);
    this.setPic3(pic3);
    this.setPic4(pic4);
    this.setPic5(pic5);
}

public String getPic1() {
    return pic1;
}

public void setPic1(String pic1) {
    this.pic1 = pic1;
}

public String getPic2() {
    return pic2;
}

public void setPic2(String pic2) {
    this.pic2 = pic2;
}

public String getPic3() {
    return pic3;
}

public void setPic3(String pic3) {
    this.pic3 = pic3;
}

public String getPic4() {
    return pic4;
}

public void setPic4(String pic4) {
    this.pic4 = pic4;
}

public String getPic5() {
    return pic5;
}

public void setPic5(String pic5) {
    this.pic5 = pic5;
}
}

而且我在活动中有一个获取 api 的方法

    private void showPictures() {
    progressDialog.showLoading();

    StringRequest request = new StringRequest(Request.Method.POST,Config.read_pictures,new Response.Listener<String>() {
                @Override
                public void onResponse(String response) {
                    progressDialog.dismissLoading();
                    svPictures.setVisibility(View.VISIBLE);
                    picturesList.clear();
                    try {
                        JSONObject jsonObject = new JSONObject(response);
                        JSONArray jsonArray = jsonObject.getJSONArray("pictures");
                        for (int i = 0; i < jsonArray.length(); i++) {
                            JSONObject object = jsonArray.getJSONObject(i);
                            String pic1 = object.getString("pic1");
                            String pic2 = object.getString("pic2");
                            String pic3 = object.getString("pic3");
                            String pic4 = object.getString("pic4");
                            String pic5 = object.getString("pic5");

                            Toast.makeText(ProductActivity.this,pic1 + pic2 + pic3
                                    + pic4 + pic5,Toast.LENGTH_LONG).show();

                            Pictures p = new Pictures(pic1,pic2,pic3,pic4,pic5);
                            picturesList.add(p);
                        }
                        pictureSliderAdapter = new PictureSliderAdapter(picturesList);
                        svPictures.setSliderAdapter(pictureSliderAdapter);
                    } catch (JSONException e) {
                        e.printstacktrace();
                        Toast.makeText(ProductActivity.this,e.toString(),Toast.LENGTH_SHORT).show();
                    }
                }
            },new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {
            progressDialog.dismissLoading();
            Toast.makeText(ProductActivity.this,error.toString(),Toast.LENGTH_SHORT).show();
        }
    }) {
        @Override
        protected Map<String,String> getParams() {
            Map<String,String> params = new HashMap<>();
            params.put("product_id",products.getId());
            return params;
        }
    };
    RequestQueue requestQueue = Volley.newRequestQueue(ProductActivity.this);
    requestQueue.add(request);
}

更新:

这是我在适配器中使用的图片布局:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center"
android:gravity="center"
android:orientation="horizontal">

<ImageView
    android:id="@+id/imgPic"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center" />

</LinearLayout>

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)