如何从mysql数据库中显示图像?

时间:2014-12-24 04:34:10

标签: android mysql

我有代码显示来自MySQL数据库的所有数据我也有MySQL数据库中有图像名称的图像字段。我可以从数据库显示图像(图像位于localhost文件夹中)。我是新的android所以请帮助我。这是我的代码,如果你可以改变我所需的代码,那么这将是一个很大的帮助。

JAVA

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;

import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import android.app.Fragment;
import android.app.ProgressDialog;
import android.content.Intent;
import android.graphics.Color;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;

public class News_events extends Fragment {
    private String jsonResult;
     private String url = "http://192.168.2.7/crescentnews/select.php";
     HttpPost httppost;
     StringBuffer buffer;
     HttpResponse response;
     HttpClient httpclient;
     List<NameValuePair> nameValuePairs;
     ProgressDialog dialog = null;

     InputStream is=null;
     String result=null;
        String line=null;
        int code;

    public News_events(){}

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {

        View rootView = inflater.inflate(R.layout.fragment_news_events, container, false);
        accessWebService();
        return rootView;
    }

    // Async Task to access the web
     private class JsonReadTask extends AsyncTask<String, Void, String> {
      @Override
      protected String doInBackground(String... params) {
          List<NameValuePair> nameValuePair = new ArrayList<NameValuePair>(1);


       HttpClient httpclient = new DefaultHttpClient();
       HttpPost httppost = new HttpPost(params[0]);
       try {

           httppost.setEntity(new UrlEncodedFormEntity(nameValuePair));
        HttpResponse response = httpclient.execute(httppost);
        jsonResult = inputStreamToString(
          response.getEntity().getContent()).toString();
        }

       catch (ClientProtocolException e) {
        e.printStackTrace();
       } catch (IOException e) {
        e.printStackTrace();
       }
       return null;
      }

      private StringBuilder inputStreamToString(InputStream is) {
       String rLine = "";
       StringBuilder answer = new StringBuilder();
       BufferedReader rd = new BufferedReader(new InputStreamReader(is));

       try {
        while ((rLine = rd.readLine()) != null) {
         answer.append(rLine);
        }
       }
        catch (IOException e) {
        // e.printStackTrace();
        Toast.makeText(getActivity().getApplicationContext(),
          "Error..." + e.toString(), Toast.LENGTH_LONG).show();
       }
       return answer;
      }

      @Override
      protected void onPostExecute(String result) {
       display();
      }
     }// end async task

     public void accessWebService() {
      JsonReadTask task = new JsonReadTask();
      // passes values for the urls string array
      task.execute(new String[] { url });
     }

     // build hash set for list view
     public void display() {


      try {
       JSONObject jsonResponse = new JSONObject(jsonResult);
       JSONArray jsonMainNode = jsonResponse.optJSONArray("news_details");
       LinearLayout MainLL= (LinearLayout)getActivity().findViewById(R.id.newslayout); 
       //LinearLayout headLN=(LinearLayout)findViewById(R.id.headsection);

       for (int i = 0; i < jsonMainNode.length(); i++) {
           JSONObject jsonChildNode = jsonMainNode.getJSONObject(i);
            final String head = jsonChildNode.optString("title");
            final String details = jsonChildNode.optString("text");
            final String date = jsonChildNode.optString("date");
            //final String time = jsonChildNode.optString("time");

            TextView headln = new TextView(this.getActivity());

            headln.setText(head); // News Headlines
            headln.setTextSize(20);
            headln.setTextColor(Color.BLACK);
            headln.setGravity(Gravity.CENTER);
            headln.setBackgroundResource(R.drawable.menubg);
            headln.setPadding(10, 20, 10, 0);
            headln.setWidth(100);
            headln.setClickable(true);
            headln.setOnClickListener(new OnClickListener() {

                @Override
                public void onClick(View v) {
                    // TODO Auto-generated method stub
                    //Toast.makeText(getBaseContext(), head, Toast.LENGTH_SHORT).show();
                   Intent intent = new Intent(getActivity().getApplicationContext(),MainActivity.class);
                   intent.putExtra("head",head.toString());
                   intent.putExtra("details",details.toString());
                   intent.putExtra("date",date.toString());
                  // intent.putExtra("time",time.toString());
                   startActivity(intent);       
                }
            });

            ImageView photo=new ImageView(this.getActivity());
            //dateln.setBackgroundColor(Color.parseColor("#f20056"));
            photo.setBackgroundColor(Color.parseColor("#000000"));
            photo.setPadding(0, 0, 10, 10);
            photo.setClickable(true);


            TextView dateln = new TextView(this.getActivity());
            dateln.setText(date); // News Headlines
            dateln.setTextSize(12);
            dateln.setTextColor(Color.BLACK);
            dateln.setGravity(Gravity.RIGHT);
            //dateln.setBackgroundColor(Color.parseColor("#f20056"));
            dateln.setBackgroundColor(0x00000000);
            dateln.setPadding(0, 0, 10, 10);
            dateln.setWidth(100);
            dateln.setClickable(true);
            dateln.setOnClickListener(new OnClickListener() {

                @Override
                public void onClick(View v) {
                    // TODO Auto-generated method stub
                     Intent intent = new Intent(getActivity().getApplicationContext(), MainActivity.class);
                       intent.putExtra("head",head.toString());
                       intent.putExtra("details",details.toString());
                       intent.putExtra("date",date.toString());
                      // intent.putExtra("time",time.toString());
                       startActivity(intent);         
                }
            });

            View sep=new View(this.getActivity());
            sep.setBackgroundColor(Color.parseColor("#252525"));
            sep.setMinimumHeight(10);

            TextView detailsln = new TextView(this.getActivity());
            detailsln.setText(details); // News Details
            detailsln.setTextSize(12);
            detailsln.setTextColor(Color.BLACK);
            detailsln.setGravity(Gravity.LEFT);
            detailsln.setPadding(10, 10, 10, 10);
            MainLL.addView(headln);
            MainLL.addView(dateln);
            MainLL.addView(photo);
            MainLL.addView(detailsln);
            MainLL.addView(sep);


            detailsln.setClickable(true);
            detailsln.setOnClickListener(new OnClickListener() {

                @Override
                public void onClick(View v) {
                    // TODO Auto-generated method stub

                     Intent intent = new Intent(getActivity().getApplicationContext(), MainActivity.class);
                       intent.putExtra("head",head.toString());
                       intent.putExtra("details",details.toString());
                       intent.putExtra("date",date.toString());
                      // intent.putExtra("time",time.toString());
                       startActivity(intent);      
                }
            });

       }
      } catch (JSONException e) {
       Toast.makeText(getActivity().getApplicationContext(), "Error" + e.toString(),
         Toast.LENGTH_SHORT).show();
      }
       }

}

1 个答案:

答案 0 :(得分:0)

将您的图片网址保存在db中(如果它们位于您主机上的同一文件夹中,请选择一个基本网址并仅保存图片名称)
获取数据后,有很多用于显示图像的库,例如:

Picasso

  

Android的强大图像下载和缓存库