【问题标题】:Android display image to gridView from URL with PicassoAndroid使用毕加索从URL显示图像到gridView
【发布时间】:2016-07-31 07:27:17
【问题描述】:

我有一个带有表图像的数据库,我有属性 id_image(int), image_name(string)

这是用于获取 image_name URL=http://lomapod.azurewebsites.net/readBarang.php?id_penjual=1 的网络服务

这就是我将如何调用 ImageURL

ImageUrl=http://lomapod.esy.es/assets/(image_name).jpg

gridItem.java

public class gridItem {
    String imageUrl;
    String barang;
    public gridItem(String barang, String imageUrl) {
        super();
        this.imageUrl = imageUrl;
        this.barang = barang;
    }
    public String getImageUrl() {
        return imageUrl;
    }
    public String getBarang() {
        return barang;
    }
}

CustomGridViewAdapter.Java

public class CustomGridViewAdapter extends ArrayAdapter<gridItem> {
    Context context;
    int layoutResourceId;
    ArrayList<gridItem> data = new ArrayList<>();
    public CustomGridViewAdapter(Context context, int layoutResourceId,
                                 ArrayList<gridItem> data) {
        super(context, layoutResourceId, data);
        this.layoutResourceId = layoutResourceId;
        this.context = context;
        this.data = data;
    }
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        View row = convertView;
        RecordHolder holder;
        if (row == null) {
            LayoutInflater inflater = ((Activity) context).getLayoutInflater();
            row = inflater.inflate(layoutResourceId, parent, false);
            holder = new RecordHolder();
            holder.txtTitle = (TextView) row.findViewById(R.id.tvItem);
            holder.imageItem = (ImageView) row.findViewById(R.id.imageView);
            row.setTag(holder);
        } else {
            holder = (RecordHolder) row.getTag();
        }
        gridItem item = data.get(position);
        holder.txtTitle.setText(item.getBarang());
        Picasso.with(context).
                load(item.getImageUrl()).
                into(holder.imageItem);
        return row;
    }
    static class RecordHolder {
        TextView txtTitle;
        ImageView imageItem;
    }
}

MainActivity.Java

   public class MainActivity extends ActionBarActivity {
    JSONParser jParser= new JSONParser();
    ArrayList<HashMap<String, String>> nameList;
    JSONArray names=null;
    GridView data;
    private static final String URL_TEST_BARANG= "http://lomapod.azurewebsites.net/readBarang.php?id_penjual=1";
    private static final String TAG_PESAN = "message";
    private static final String TAG_HASIL = "result";
    private static final String TAG_BARANG = "nama_barang";
    private static final String TAG_IMAGE= "image_name";
    ImageView imageview;
    CustomGridViewAdapter mGridAdapter;
    ArrayList<gridItem> mGridData;
    public  MainActivity()
    {}

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        data=(GridView) findViewById(R.id.lvSeller);
        nameList= new ArrayList<HashMap<String, String>>();
        imageview =(ImageView) findViewById(R.id.imageView);
        mGridData=new ArrayList<>();
        mGridAdapter=new CustomGridViewAdapter(this,R.layout.grid_item,mGridData);
        data.setAdapter(mGridAdapter);
        new AmbilDataJson().execute();
    }

    public class AmbilDataJson extends AsyncTask<String,String,String> {

        int sukses=0;

        public AmbilDataJson() {}

        @Override
        protected void onPreExecute() {
            super.onPreExecute();
        }

        @Override
        protected String doInBackground(String... args) {

            List<NameValuePair> params = new ArrayList<NameValuePair>();

            try
            {
                JSONObject json = jParser.makeHttpRequest(URL_TEST_BARANG, "GET", params);

                if(json != null)
                {
                    sukses = json.getInt(TAG_PESAN);
                    if(sukses == 0)
                    {
                        nameList = new ArrayList<HashMap<String,String>>();
                        Log.d("Semua Nama: ", json.toString());
                        names = json.getJSONArray(TAG_HASIL);

                        for(int i = 0; i < names.length();i++)
                        {
                            JSONObject c = names.getJSONObject(i);
                            String barang = c.getString(TAG_BARANG);
                            String image = "lomapod.esy.es/assets/"+c.getString(TAG_IMAGE);

                            HashMap<String,String> map = new HashMap<String,String>();

                            map.put(TAG_BARANG,barang);
                            map.put(TAG_IMAGE,image);
                            nameList.add(map);
                        }
                    }
                }
            }catch(JSONException e)
            {
                e.printStackTrace();
            }

            return null;
        }

        @Override
        protected void onPostExecute(String s) {
            if(sukses == 0)
            {
                CustomGridViewAdapter adapter = new CustomGridViewAdapter(
                        MainActivity.this,R.layout.grid_item,mGridData);

                mGridAdapter.setGridData(mGridData);
            }
            else
            {
                Toast.makeText(MainActivity.this,"Failed",Toast.LENGTH_LONG);
            }
        }
    }
}

我想在android studio中将图像显示到gridview,但我不知道我应该在MainActivity中做什么。

谁能告诉我怎么做?提前致谢

【问题讨论】:

    标签: java android image gridview picasso


    【解决方案1】:

    首先,您需要填写您的列表,并将其传递给适配器。之后,您需要将适配器设置为 GridView。

    【讨论】:

    • 我不会代替你做,但我会就你的主要活动写一些评论,并编辑这个答案。
    • 我已经更新了main,你能帮我找出错误吗?
    • 对不起,我真的忘记了。你现在遇到了什么问题?
    • gridview 中的图片,加载失败
    猜你喜欢
    • 2016-03-12
    • 2018-01-15
    • 1970-01-01
    • 1970-01-01
    • 2018-01-10
    • 2017-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多