android从MySql数据库中检索blob图像

时间:2014-01-28 05:34:50

标签: android mysql imageview xampp

我正在尝试使用包含术语的列表视图开发医学词典,并且当点击项目时,详细信息出现在另一个意图上。所有这些都是从我的本地数据库中提取的,我不使用SQLITE ..我希望医学的每个细节都至少有一个图像。但我只能检索文本而不能检索图像。

任何知道如何做到这一点的人?

这是我显示药物详情的代码。

MedInfoActivity.java

import library.JSONParser2;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

import org.apache.http.NameValuePair;
import org.apache.http.message.BasicNameValuePair;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;


import android.app.Activity;
import android.app.ListActivity;
import android.app.ProgressDialog;
import android.content.Intent;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.TextView;


public class MedInfoActivity extends Activity {

    TextView txtMedInfo;
    TextView med_name;
    String mid;
    ImageView medimg;

    // Progress Dialog
    private ProgressDialog pDialog;

    // JSON parser class
    JSONParser2 jsonParser = new JSONParser2();

    // url to get all products list
    private static String url_med_info = "http://10.0.2.2/android_connect/med_info.php";

    // JSON Node names
    private static final String TAG_SUCCESS = "success";
    private static final String TAG_MEDICINE = "medicine";
    private static final String TAG_MED_ID = "mid";
    private static final String TAG_MED_NAME = "med_name";
    private static final String TAG_MED_INFO = "med_info";
    private static final String TAG_IMAGE = "image";


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

        // save button
        //btnSave = (Button) findViewById(R.id.btnSave);
        //btnDelete = (Button) findViewById(R.id.btnDelete);

        // getting product details from intent
        Intent i = getIntent();

        // getting product id (pid) from intent
        mid = i.getStringExtra(TAG_MED_ID);

        // Getting complete product details in background thread
        new GetMedicineDetails().execute();

    }

    /**
     * Background Async Task to Get complete product details
     * */
    class GetMedicineDetails extends AsyncTask<String, String, String> {

        /**
         * Before starting background thread Show Progress Dialog
         * */
        @Override
        protected void onPreExecute() {
            super.onPreExecute();
            pDialog = new ProgressDialog(MedInfoActivity.this);
            pDialog.setMessage("Loading medicines details. Please wait...");
            pDialog.setIndeterminate(false);
            pDialog.setCancelable(true);
            pDialog.show();
        }

        /**
         * Getting product details in background thread
         * */
        protected String doInBackground(String... params) {

            // updating UI from Background Thread
            runOnUiThread(new Runnable() {
                public void run() {
                    // Check for success tag
                    int success;
                    try {
                        // Building Parameters
                        List<NameValuePair> params = new ArrayList<NameValuePair>();
                        params.add(new BasicNameValuePair("mid", mid));

                        // getting product details by making HTTP request
                        // Note that product details url will use GET request
                        JSONObject json = jsonParser.makeHttpRequest(
                                url_med_info, "GET", params);

                        // check your log for json response
                            Log.d("Single Medicine Details", json.toString());

                            // json success tag
                            success = json.getInt(TAG_SUCCESS);
                            if (success == 1) {
                                // successfully received product details
                                JSONArray medObj = json
                                        .getJSONArray(TAG_MEDICINE); // JSON Array

                                // get first product object from JSON Array
                                JSONObject medical_dictionary = medObj.getJSONObject(0);

                                // product with this pid found
                                // Edit Text
                                med_name = (TextView) findViewById(R.id.med_name);
                                txtMedInfo = (TextView) findViewById(R.id.inputMedInfo);
                                medimg = (ImageView) findViewById(R.id.medimg);



                                // display product data in EditText
                                txtMedInfo.setText(medical_dictionary.getString(TAG_MED_INFO));
                                med_name.setText(medical_dictionary.getString(TAG_MED_NAME));
                                medimg.setTag(medical_dictionary.getString(TAG_IMAGE));


                            }else{
                                // product with pid not found
                            }
                        } catch (JSONException e) {
                            e.printStackTrace();
                        }
                    }
                });

                return null;
            }


            /**
             * After completing background task Dismiss the progress dialog
             * **/
            protected void onPostExecute(String file_url) {
                // dismiss the dialog once got all details
                pDialog.dismiss();
            }
        }
}

med_info.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/white_bg"
    android:orientation="vertical" >

    <!-- Name Label -->

    <TextView
        android:id="@id/med_name"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:paddingLeft="10dip"
        android:paddingRight="10dip"
        android:paddingTop="10dip"
        android:textColor="#000000"
        android:textSize="30dp" />

    <!-- Input description -->

    <ImageView
        android:id="@+id/medimg"
        android:layout_width="48dp"
        android:layout_height="40dp" />

    <TextView
        android:id="@+id/inputMedInfo"
        android:layout_width="fill_parent"
        android:layout_height="match_parent"
        android:layout_margin="5dip"
        android:layout_marginBottom="15dip"
        android:gravity="top"
        android:lines="28"
        android:textColor="#000000"
        android:textSize="19dp" />

</LinearLayout>

有人可以告诉我使用我的代码如何添加用于从表medicine_dictionary检索图像的代码并检索列med_name,med_info(包括图像)。请。对于那些愿意回答我的人,我会非常感激和感激。

1 个答案:

答案 0 :(得分:2)

嘿你需要这样设置,在你的onPostExe方法中,这里的结果是一个位图图片,你需要转换你的

 medical_dictionary.getString(TAG_IMAGE);

进入位图,然后在结果中传递它,

   medimg.setImageBitmap(result);