简体   繁体   中英

android retrieve blob images from MySql database

I am trying to develop medicine dictionary using listview that contains terms and when an item is clicked details appears on another intent. All of these are being fetched from my local database and i don't use SQLITE for it.. I want every details of medicine to have at least one image. But i can only able to retrieve texts but not images.

Anyone who knows how to this?

This is my code for displaying the details of the medicine.

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>

Can someone tell me using my code how can I add codes for retrieving images from the table medicine_dictionary and retrieve the columns med_name, med_info including the image. Please. I would be very greatfull and thankful for those who will answer me.

Hey you need to set like this, in your onPostExe method, Here result is a bitmap image, you need to convert your

 medical_dictionary.getString(TAG_IMAGE);

into bitmap then pass it in the result,

   medimg.setImageBitmap(result);

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM