0

我试图解决这个问题好几天,但还没有运气。请帮助我。我需要编写一个函数来接受 URL 作为参数并返回 ImageView。有人可以告诉我如何修改此代码来做到这一点吗?它给了我下面的红线imgURL.setImageBitmap(directory.getString(TAG_IMAGE));

public class ViewProfileActivity extends Activity {

    ImageView imgURL;
    TextView txtName;

    String eid; 

    private ProgressDialog pDialog;

    JSONParser jsonParser = new JSONParser();

    private static final String url_veiw_directory = "http://website.com/app/include/view_directory.php";

    private static final String TAG_SUCCESS = "success";
    private static final String TAG_DIRECTORY = "directory";
    private static final String TAG_ID = "eid";
    private static final String TAG_IMAGE = "image";
    private static final String TAG_NAME = "name";  

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

        Intent i = getIntent();

        eid = i.getStringExtra(TAG_ID);     


        new GetDirectoryDetails().execute();

    }   

    class GetDirectoryDetails extends AsyncTask<String, String, String> {

        protected String doInBackground(String... params) {

            runOnUiThread(new Runnable() {
                public void run() {

                    int success;
                    try {

                        List<NameValuePair> params = new ArrayList<NameValuePair>();
                        params.add(new BasicNameValuePair("id", eid));

                        JSONObject json = jsonParser.makeHttpRequest(url_veiw_directory, "GET", params);

                        Log.d("Single Directory Details", json.toString());

                        success = json.getInt(TAG_SUCCESS);
                        if (success == 1) {                     

                            JSONArray directoryObj = json.getJSONArray(TAG_DIRECTORY);  
                            JSONObject directory = directoryObj.getJSONObject(0);

                            imgURL = (ImageView) findViewById(R.id.image);
                            txtName = (TextView) findViewById(R.id.name);                       


                            imgURL.setImageBitmap(directory.getString(TAG_IMAGE));
                            txtName.setText(directory.getString(TAG_NAME));                         


                        }else{

                        }
                    } catch (JSONException e) {
                        e.printStackTrace();
                    }
                }
            });

            return null;
        }

        protected void onPostExecute(String file_url) {
            pDialog.dismiss();
        }

    }
}
4

2 回答 2

3

http://developer.android.com/reference/android/widget/ImageView.html#setImageBitmap%28android.graphics.Bitmap%29

setImageBitmap()ImageView 中没有接受字符串作为参数的 - 方法。您必须提供位图。

相反,您可以使用BitmapFactory创建您的位图,如下所示:

setImageBitmap(BitmapFactory.decodeFile(directory.getString(TAG_IMAGE)));

编辑:抱歉,忘记了这是您要解码的 URL。请参阅@MarchingHome 答案。

于 2012-10-16T20:29:28.673 回答
2

I think I see the problem. ImageView.setImageBitmap needs a Bitmap object as argument. A String won't do. You should try to load the JSONObject as a Bitmap object.

This could be the answer you are looking for: Loading a Bitmap from URL

于 2012-10-16T20:35:59.607 回答