无法使用毕加索将图像加载到ImageView

时间:2019-09-02 19:59:28

标签: php android-volley picasso

我找到了一些非常不错的指南,说明如何将MySQL数据库中的图像加载到自定义列表视图中。

数据库由4列组成:id,product_name,product_price和product_image,其中产品图片具有图片的网址(当前使用phpmyadmin和wamp)。

该代码基本上可以正常工作并且可以读取数据,但是由于某种原因,它没有在列表中显示图像,仅显示名称和价格。

用于创建列表的代码为:

public class CustomListAdapter extends ArrayAdapter<Product_List> {
    ArrayList<Product_List>productList;
    Context context;
    int resource;
    public CustomListAdapter(@NonNull Context context, int resource, @NonNull ArrayList<Product_List> productList) {
        super(context, resource, productList);
        this.productList=productList;
        this.context=context;
        this.resource=resource;

    }

    @NonNull
    @Override
    public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
        if (convertView==null){
            LayoutInflater layoutInflater=(LayoutInflater)getContext().getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
            convertView=layoutInflater.inflate(R.layout.custom_list,null,true);
        }
        Product_List pr=getItem(position);
        ImageView primg=(ImageView)convertView.findViewById(R.id.prImg);
        TextView prname=(TextView)convertView.findViewById(R.id.txtName);
        TextView prprice=(TextView)convertView.findViewById(R.id.txtPrice);

        Picasso.with(context)
                .load(pr.getPrImg())
                .into(primg);

        prname.setText(pr.getPrName());

        prprice.setText(pr.getPrPrice());

        return convertView;
    }
}

主要功能是:

public class MainActivity extends AppCompatActivity {
    private static final String HI = "http://10.0.2.2/customlistview/productinfo.php";
    ArrayList<Product_List>product;
    ListView lv;
    private JsonArrayRequest request;
    private RequestQueue requestQueue;
    private CustomListAdapter adapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        lv=(ListView)findViewById(R.id.listview);

        product=new ArrayList<>();


        getData();
    }

    private void getData() {
        request=new JsonArrayRequest(HI, new Response.Listener<JSONArray>() {
            @Override
            public void onResponse(JSONArray response) {
                JSONObject jsonObject;
                for (int i=0; i<response.length(); i++){
                    try {
                        jsonObject=response.getJSONObject(i);
                        Product_List productList=new Product_List(jsonObject.getString("product_name"),
                                jsonObject.getString("product_price"),
                                jsonObject.getString("product_image"));
                        product.add(productList);
                    } catch (JSONException e) {
                        e.printStackTrace();
                    }

                }
                setupData(product);
            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {

            }
        });
        requestQueue = Volley.newRequestQueue(this);
        requestQueue.add(request);

    }

    private void setupData(ArrayList<Product_List> product) {
        adapter=new CustomListAdapter(getApplicationContext(),R.layout.custom_list,product);
        lv.setAdapter(adapter);
    }
}

我得到的结果如下:

enter image description here

我的数据库所在的位置:

enter image description here 有没有理由不起作用? 据我了解,这是由于picasso.with(context.load...行造成的。

谢谢

答案:

因此,我发现解决问题的方法是在数据库内图像的路径内部而不是将http://localhost/costumlistview ...更改为http://10.0.2.2/costumoistview

0 个答案:

没有答案
相关问题