get image from mySQL to listview Android

I want to get an image from my database mySQL to show in listview (image + text listview)

my code :

       public void cek(){

           String url_select = "http://10.0.2.2/BloodGlucose/selectDoctor.php";

           HttpClient httpClient = new DefaultHttpClient();
           HttpPost httpPost = new HttpPost(url_select);

           //parameter
           ArrayList<NameValuePair> param = new ArrayList<NameValuePair>();

           try {
              //add parameter
               httpPost.setEntity(new UrlEncodedFormEntity(param));

             HttpResponse httpRespose = httpClient.execute(httpPost);
             HttpEntity httpEntity = httpRespose.getEntity();

             //read content
             InputStream in = httpEntity.getContent();
             BufferedReader read = new BufferedReader(new InputStreamReader(in));

             String content = "";
             String line = "";

             while((line = read.readLine())!=null){
                content += line;
             }

             Log.d("ADBUG", "content: "+content);


             //json
             if(!content.equals("null")){




                try {
                   JSONArray jArr = new JSONArray(content);
                   for(int i=0;i<jArr.length();i++){
                      JSONObject jObj = jArr.getJSONObject(i);
                      String id = jObj.getString("_id");
                      String name = jObj.getString("name");
                      String dateofbirth = jObj.getString("dateofbirth");
                      String phone = jObj.getString("telp");
                      String address = jObj.getString("clinicaddress");
                      String file = jObj.getString("file");
                      String uname = jObj.getString("username_doctor");
                      String lulusan = jObj.getString("lulusan");
                      String clinicname = jObj.getString("clinicname");

                      names.add(name);
                      date.add(dateofbirth);
                      telp.add(phone);      
                      clinic.add(address);
                      usernamedoctor.add(uname);
                      namaklinik.add(clinicname);
                      graduate.add(lulusan);



                   }



setListAdapter(new DoctorArrayAdapter(this, names)); 

                } catch (JSONException e) {
                   // TODO Auto-generated catch block
                   e.printStackTrace();
                }

             }else{
                Toast.makeText(this, "Error", Toast.LENGTH_LONG).show();
             }

          } catch (ClientProtocolException e) {
             // TODO Auto-generated catch block
             e.printStackTrace();
          } catch (IOException e) {
             // TODO Auto-generated catch block
             e.printStackTrace();
          }
       }

DoctorArrayAdapter code:

package research.android.bloodglucose;


import java.util.ArrayList;

import research.android.bloodglucose.R;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.TextView;

public class DoctorArrayAdapter extends ArrayAdapter<String> {
    private final Context context;
    private final ArrayList<String> values;

    public DoctorArrayAdapter(Context context, ArrayList<String> names) {
        super(context, R.layout.list_row, names);
        this.context = context;
        this.values = names;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        LayoutInflater inflater = (LayoutInflater) context
            .getSystemService(Context.LAYOUT_INFLATER_SERVICE);

        View rowView = inflater.inflate(R.layout.list_row, parent, false);
        TextView textView = (TextView) rowView.findViewById(R.id.DoctorName);
        ImageView imageView = (ImageView) rowView.findViewById(R.id.list_image);
        textView.setText(values.get(position));

        // Change icon based on name
        String s = values.get(position);

        System.out.println(s);

        /*if (s.equals("WindowsMobile")) {
            imageView.setImageResource(R.drawable.windowsmobile_logo);
        } else if (s.equals("iOS")) {
            imageView.setImageResource(R.drawable.ios_logo);
        } else if (s.equals("Blackberry")) {
            imageView.setImageResource(R.drawable.blackberry_logo);
        } else {
            imageView.setImageResource(R.drawable.android_logo);
        }*/

        return rowView;
    }
}

is there any something wrong with my code? because the image didn't show, it's only the text, thank you very much

Answers


Handy, You should create a class that extends from ArrayAdapter, then you implement the method getView to tell your list what to do on each item (add the image and the text).

check this link Android listview example

(the Custom ArrayAdapter example)

(And one tip, your error part comes from building a listview not from fetching the data from MySQL so remove this part from your question it's misleading)

This is a function to get the image having its url path

public static Bitmap getURLImage(String path)
{

    try
    {
        URL aURL = new URL(path);
        final URLConnection conn = aURL.openConnection();
        conn.connect();
        final BufferedInputStream bis = new BufferedInputStream(
                conn.getInputStream());
        final Bitmap bm = BitmapFactory.decodeStream(bis);
        bis.close();
        return bm;
    }
    catch (Throwable e)
    {   
        Log.w("ERROR", "Error " + e.getMessage());
        return null;
    }
}

then you do (you should call it from a thread, because since android 4.0 you're not allowed to make a network connection from the main thread, This is the part that should be added in getView):

    new Thread() {
                public void run() {
                    try {
                        //mBitmap is an attirbute
                        mBitmap = getRemoteImage(link);
                        handler.sendEmptyMessage(COMPLETE);

                    } finally {

                    }
                };
            };



/**
in your handler u set the image to the bitmap that you fetched
*/
    private final Handler handler = new Handler(new Callback() {

            public boolean handleMessage(Message msg) {
                   imageView.setImageBitmap(mBitmap);
            }
    }

Need Your Help

How to traverse a Dictionary that is returned from JsonResult method?

c# javascript asp.net-mvc-4

I have a JavaScript Method that makes an AJAX call to a controller method.

About UNIX Resources Network

Original, collect and organize Developers related documents, information and materials, contains jQuery, Html, CSS, MySQL, .NET, ASP.NET, SQL, objective-c, iPhone, Ruby on Rails, C, SQL Server, Ruby, Arrays, Regex, ASP.NET MVC, WPF, XML, Ajax, DataBase, and so on.