Как я могу заполнить свой gridview из JSON URL в Android?

Я хочу заполнить вид сетки изображениями. Изображения хранятся в базе данных MySql. Я написал сценарий на стороне сервера, используя PHP для выбора необходимых изображений и преобразования ответа в json.

Теперь, как загрузить эти изображения в gridview?

Есть много связанных вопросов, но я не могу найти правильное решение. Я также упомянул Universal Image Loader, этот пример хорош, но есть ли простой способ?

Я использовал этот вопрос в качестве ссылки, и мой код Get JSON from URL выглядит так:

public String getJSONUrl(String strUrl) throws IOException {
    StringBuilder str = new StringBuilder();
    HttpClient client = new DefaultHttpClient();
    HttpGet httpGet = new HttpGet(url);
    try {
        HttpResponse response = client.execute(httpGet);
        StatusLine statusLine = response.getStatusLine();
        int statusCode = statusLine.getStatusCode();
        if (statusCode == 200) { // Download OK
            HttpEntity entity = response.getEntity();
            InputStream content = entity.getContent();
            BufferedReader reader = new BufferedReader(new InputStreamReader(content));
            String line;
            while ((line = reader.readLine()) != null) {
                str.append(line);
            }
        } else {
            Log.e("Log", "Failed to download file..");
        }
    } catch (ClientProtocolException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }
    return str.toString();

}

Кто-нибудь может направить меня?

Обновление моего кода.

Моя основная деятельность:

JSONObject jsonobject;
JSONArray jsonarray;
GridView gridview;
GridViewAdapter adapter;
ProgressDialog mProgressDialog;
ArrayList<HashMap<String, String>> arraylist;

String strUrl = "http://192.168.0.215/data/test_image_thumb.php";
/*
 * static String RANK = "rank"; 
 * static String COUNTRY = "country"; static
 * String POPULATION = "population";
 */

static String FLAG = "image";

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
     setContentView(R.layout.activity_main);
     new DownloadJSON().execute();
}

private class DownloadJSON extends AsyncTask<Void,Void,Void>{


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

        /*Creating a progress dialog*/
        mProgressDialog = new ProgressDialog(MainActivity.this);

        /*Set progress title*/
        mProgressDialog.setTitle("Image Gallery");

        // Set progressdialog message
        mProgressDialog.setMessage("Loading...");
        mProgressDialog.setIndeterminate(false);

        // Show progressdialog
        mProgressDialog.show();

    }


    @Override
    protected Void doInBackground(Void...params) {
        // Create an array
        arraylist = new ArrayList<HashMap<String, String>>();
        //data = downloadUrl(strUrl);
        // Retrieve JSON Objects from the given URL address
        jsonobject = JSONfunctions.getJSONfromURL("http://192.168.0.215/data/test_image_thumb.php");

        try {
            // Locate the array name in JSON
            jsonarray = jsonobject.getJSONArray("products");

            for (int i = 0; i < jsonarray.length(); i++) {
                HashMap<String, String> map = new HashMap<String, String>();
                jsonobject = jsonarray.getJSONObject(i);
                // Retrive JSON Objects
                /*map.put("rank", jsonobject.getString("rank"));
                map.put("country", jsonobject.getString("country"));
                map.put("population", jsonobject.getString("population"));*/
                map.put("flag", jsonobject.getString("image"));
                // Set the JSON Objects into the array
                arraylist.add(map);
            }
        } catch (JSONException e) {
            Log.e("Error", e.getMessage());
            e.printStackTrace();
        }

        return null;
    }


    @Override
    protected void onPostExecute(Void result) {
        // Locate the GridView in main.xml
        gridview = (GridView) findViewById(R.id.gridView1);
        // Pass the results into GridViewAdapter.java
        adapter = new GridViewAdapter(MainActivity.this, arraylist);
        // Set the adapter to the gridview
        gridview.setAdapter(adapter);
        // Close the progressdialog
        mProgressDialog.dismiss();
    }

}

и код кодирования Json это...

try {

            result = downloadUrl(url);

            jArray = new JSONObject(result);

        } catch (JSONException e) {
            Log.e("log_tag", "Error parsing data " + e.toString());
        } catch (IOException e) {
            e.printStackTrace();
        }

        return jArray;
    }


    private static String downloadUrl(String strUrl) throws IOException {

        String data = "";
        InputStream iStream = null;
        try{
                URL url = new URL(strUrl);

                // Creating an http connection to communicate with url 
                HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();

                // Connecting to url 
                urlConnection.connect();

                // Reading data from url 
                iStream = urlConnection.getInputStream();

                BufferedReader br = new BufferedReader(new InputStreamReader(iStream));

                StringBuffer sb  = new StringBuffer();

                String line = "";
                while( ( line = br.readLine())  != null){
                    sb.append(line);
                }

                data = sb.toString();

                br.close();

        }catch(Exception e){
                Log.d("Exception while downloading url", e.toString());
        }finally{
                iStream.close();
        }

        return data;
    }

Я следовал за ссылкой в ​​этом ответе. Проблема в том, что я не получаю ошибки в журнале, но также не получаю нужные изображения, заполненные в виде сетки!!

Может кто-нибудь, пожалуйста, поправьте меня...

0 ответов

Другие вопросы по тегам