Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/188.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我正在尝试从本地服务器检索信息,并在android中以简单的listView显示_Java_Android_Mysql_Listview - Fatal编程技术网

Java 我正在尝试从本地服务器检索信息,并在android中以简单的listView显示

Java 我正在尝试从本地服务器检索信息,并在android中以简单的listView显示,java,android,mysql,listview,Java,Android,Mysql,Listview,问题是图像,如何在listView中显示从服务器下载的位图图像。我已经尝试了互联网上的所有方法。我是android编程新手。请帮助我 package com.example.sumit.demoapplication4; import android.app.Activity; import android.app.ListActivity; import android.app.ProgressDialog; import android.content.

问题是图像,如何在listView中显示从服务器下载的位图图像。我已经尝试了互联网上的所有方法。我是android编程新手。请帮助我

     package com.example.sumit.demoapplication4;

   import android.app.Activity; 
   import android.app.ListActivity;
   import android.app.ProgressDialog;
   import android.content.Intent;
   import android.graphics.Bitmap;
   import android.graphics.BitmapFactory; 
   import android.os.AsyncTask;
   import android.os.Bundle;
   import android.provider.MediaStore;
   import android.util.Base64;
   import android.util.Log;
   import android.view.View;
   import android.widget.ImageButton;
   import android.widget.SimpleAdapter;

   import java.io.BufferedReader;
   import java.io.BufferedWriter;
   import java.io.ByteArrayOutputStream;
   import java.io.InputStream;
   import java.io.InputStreamReader;
   import java.io.OutputStream;
   import java.io.OutputStreamWriter;
   import java.net.HttpURLConnection;
   import java.net.URL;
   import java.net.URLEncoder;
   import java.util.ArrayList;
   import java.util.HashMap;
   import java.util.Objects;
   import java.util.concurrent.ExecutionException;

   public class SearchNovel extends ListActivity {

    SimpleAdapter simpleAdapter;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_search_novel);
    ArrayList<HashMap<String,Object>> feedList=new ArrayList<HashMap<String, Object>>();
    HashMap<String,Object> map=new HashMap<String,Object>();
    String result=getData();
    if (!result.equals("")) {
        String[] r1=result.split("<br>");
        for(int i=0;i<r1.length;i++){
            String[] r2=r1[i].split(",", 2);
            String title=r2[0].toString().trim();
            String author=r2[1].toString().trim();
            Bitmap bitmap=null;
            try {
               bitmap= new GetImage().execute(title).get();
            } catch (InterruptedException e) {
                e.printStackTrace();
            } catch (ExecutionException e) {
                e.printStackTrace();
            }
            map=new HashMap<String,Object>();
            String stringImage=getStringImage(bitmap);
            map.put("image",stringImage);
            map.put("title",title);
            map.put("author", author);
            feedList.add(map);
        }
    }
    simpleAdapter=new SimpleAdapter(this,feedList,R.layout.novellist,new String[]{"image","title","author"},new int[]{R.id.icon,R.id.tv1,R.id.tv2});
    setListAdapter(simpleAdapter);



}

private String getStringImage(Bitmap bitmap) {
    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    //resizedBitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos);
    bitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos);
    byte[] imageBytes = baos.toByteArray();
    String encodedImage = Base64.encodeToString(imageBytes, Base64.DEFAULT);
    return encodedImage;
}


private String getData() {
    String data=null;
    class RetrieveData extends AsyncTask<String,String,String>{

        ProgressDialog progressDialog;

        @Override
        protected void onPreExecute() {
            super.onPreExecute();
            progressDialog=ProgressDialog.show(SearchNovel.this,"Connecting Server...","Please Wait...",true,true);
        }

        @Override
        protected String doInBackground(String... params) {
            String url="http://192.168.43.89/phpmyadmin/shareNovel/NovelList.php";
            try{
                URL u=new URL(url);
                HttpURLConnection httpURLConnection=(HttpURLConnection)u.openConnection();
                httpURLConnection.setRequestMethod("POST");
                httpURLConnection.setDoInput(true);
                httpURLConnection.setDoOutput(true);
                InputStream inputStream=httpURLConnection.getInputStream();
                BufferedReader bufferedReader=new BufferedReader(new InputStreamReader(inputStream,"UTF-8"));
                String response="";
                String temp="";
                while((temp=bufferedReader.readLine())!=null){
                    response+=temp;

                }
                bufferedReader.close();
                inputStream.close();
                httpURLConnection.disconnect();
                return response;
            }catch (Exception e){
                e.printStackTrace();
            }
            return null;
        }

        @Override
        protected void onPostExecute(String s) {
            super.onPostExecute(s);
            progressDialog.dismiss();
        }
    }
    RetrieveData retrieveData=new RetrieveData();
    try{
       data= retrieveData.execute().get();
    }catch (Exception e){
        e.printStackTrace();
    }
return data;
}


private class GetImage extends AsyncTask<String,String,Bitmap> {

    @Override
    protected Bitmap doInBackground(String... params) {
        String title=params[0];
        String url="http://192.168.43.89/phpmyadmin/shareNovel/getImageNovel.php";
        Bitmap image=null;
        try{
            URL url1=new URL(url);
            HttpURLConnection httpURLConnection=(HttpURLConnection)url1.openConnection();
            httpURLConnection.setRequestMethod("POST");
            httpURLConnection.setDoInput(true);
            httpURLConnection.setDoOutput(true);
            OutputStream outputStream = httpURLConnection.getOutputStream();
            BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(outputStream, "UTF-8"));
            String data = URLEncoder.encode("title", "UTF-8") + "=" + URLEncoder.encode(title, "UTF-8");
            bufferedWriter.write(data);
            bufferedWriter.close();

            image=BitmapFactory.decodeStream(httpURLConnection.getInputStream());


        }catch (Exception e){
            e.printStackTrace();
        }
        return image;
    }
}
package com.example.sumit.demoapplication4;
导入android.app.Activity;
导入android.app.ListActivity;
导入android.app.ProgressDialog;
导入android.content.Intent;
导入android.graphics.Bitmap;
导入android.graphics.BitmapFactory;
导入android.os.AsyncTask;
导入android.os.Bundle;
导入android.provider.MediaStore;
导入android.util.Base64;
导入android.util.Log;
导入android.view.view;
导入android.widget.ImageButton;
导入android.widget.simpledapter;
导入java.io.BufferedReader;
导入java.io.BufferedWriter;
导入java.io.ByteArrayOutputStream;
导入java.io.InputStream;
导入java.io.InputStreamReader;
导入java.io.OutputStream;
导入java.io.OutputStreamWriter;
导入java.net.HttpURLConnection;
导入java.net.URL;
导入java.net.urlcoder;
导入java.util.ArrayList;
导入java.util.HashMap;
导入java.util.Objects;
导入java.util.concurrent.ExecutionException;
公共类搜索活动{
simpledapter simpledapter;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u search\u novel);
ArrayList feedList=新的ArrayList();
HashMap=newHashMap();
字符串结果=getData();
如果(!result.equals(“”){
字符串[]r1=结果。拆分(
);
对于(int i=0;i使用毕加索、Glide或Volley从网络检索图像

在你滚动之前,你的方法会很好地工作。在那之后,所有的视图都会被回收,所有的东西都会变得杂乱无章

毕加索、Glide和Volley都自己使用背景线程,缓存图像,这样你就不必一次又一次地下载。他们还自己处理视图回收。他们还将尽最大努力防止OutOfMemory异常

我强烈推荐使用任何一款。它将为您节省大量时间

毕加索可以在一行中取代你获取图像的全部任务

   Picasso.with(context).load(yoururl).placeholder(anylocalimage).into(yourdesiredlistitem);
滑翔:

毕加索:

截击:(这是截击的克隆,可能已经过时,请检查)


你为什么要手工完成这些工作?只需使用现有的网络库。这是最简单的集成方法,请尝试一下。