Приложения для Android: как получить изображение из веб-сервиса для показа в приложении? - PullRequest
0 голосов
/ 02 января 2012

это формат json из веб-сервиса: {"result": [{"id": "1", "category": "Rumah sakit", "image": "hospital.png"}]}

вот код Android:

публичный класс ARPublicFacilitiesActivity расширяет Activity {

public static int PILIHAN = 0;

private ProgressDialog waitDialog;
private LinearLayout layout;

private String JsonKategori = "";

private ImageLoader imgLoader;

public static String image[];

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    this.getWindow().requestFeature(Window.FEATURE_NO_TITLE);
    getWindow().setSoftInputMode(
            WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
    setContentView(R.layout.menudinamis);

    layout = (LinearLayout) findViewById(R.id.layout);

    waitDialog = ProgressDialog.show(ARPublicFacilitiesActivity.this, "",
            "Download category ...");
    waitDialog.setIcon(R.drawable.iconarpf);
    waitDialog.show();
    new UnduhCategoryTask().execute();

}

class UnduhCategoryTask extends AsyncTask<String, Void, Void> {

    protected Void doInBackground(String... arg0) {
        JsonKategori = HTTPConnection.openUrl(HTTPConnection.host
                + "category.php");
        System.out.println("Data : " + JsonKategori);
        return null;
    }

    protected void onPostExecute(Void result) {
        // TODO Auto-generated method stub
        super.onPostExecute(result);
        waitDialog.dismiss();
        initButton();
    }
}

public void initButton() {

    imgLoader = new ImageLoader(this);

    // memparsing json
    try {
        JSONObject jo = new JSONObject(JsonKategori);
        JSONArray ja = jo.getJSONArray("result");
        int id = 0;
        image = new String[ja.length()];
        LinearLayout ly[] = new LinearLayout[2];
        // DrawableManager dm = new DrawableManager();
        for (int x = 0; x < ly.length; x++) {
            ly[x] = new LinearLayout(this);
            ly[x].setOrientation(LinearLayout.VERTICAL);
            ly[x].setPadding(5, 5, 5, 5);
            ly[x].setGravity(Gravity.CENTER_VERTICAL);
        }
        for (int x = 0; x < ja.length(); x++) {
            JSONObject joj = ja.getJSONObject(x);

            image[x] = joj.getString("image");
            ImageView img = new ImageView(this);
            img.setPadding(5, 5, 5, 2);
            img.setMinimumHeight(96);
            img.setMinimumWidth(96);
            img.setMaxHeight(96);
            img.setMaxWidth(96);

            final String nilai = joj.getString("id") + "";

            img.setTag(HTTPConnection.urlPicture 
                    + joj.getString("image"));
            imgLoader.DisplayImage(HTTPConnection.urlPicture 
                    + joj.getString("image"),this, img);
            img.setOnClickListener(new OnClickListener() {

                public void onClick(View arg0) {
                    PILIHAN = Integer.parseInt(nilai);
                    startActivity(new Intent(
                            ARPublicFacilitiesActivity.this, MixView.class));
                }
            });


            ly[id].addView(img);
            TextView txt = new TextView(this);
            txt.setText(joj.getString("category"));
            txt.setTextColor(Color.GRAY);
            txt.setGravity(Gravity.CENTER_HORIZONTAL);
            ly[id].addView(txt);
            if (ja.length() % 2 == 0) {
                if (x == ((ja.length() / 2) - 1)) {
                    layout.addView(ly[id]);
                    ++id;
                }
            } else {
                if (x == (ja.length() / 2)) {
                    layout.addView(ly[id]);
                    ++id;
                }
            }
        }
        layout.addView(ly[id]);
    } catch (JSONException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}

}

, когда я запускаю этот скрипт выше, заголовок категории и изображение успешнопоявляются.Проблема в том, что изображение отображается не моим изображением из веб-службы, а значком Android по умолчанию.Я пытался изменить размер своего изображения в веб-сервисе, но все еще не работает.

, пожалуйста, помогите мне решить его.

Большое спасибо.

1 Ответ

0 голосов
/ 12 июня 2012

Потому что я не смог найти ни одной строки кода, в которой вы устанавливаете изображение в вашем ImageView. подобно img.setImage (YOUR_IMAGE);

...