Java GridView未填充图像

Java GridView未填充图像,java,android,xml,Java,Android,Xml,我正在尝试连接到站点,使用Jsoup解析站点上的图像,将每个图像保存为位图,然后在网格视图中显示所有这些图像。从网格视图中选择图像后,图像应显示在图像视图中 然而,在运行我的代码时,我得到的只是一个空白屏幕(显示了一个祝酒词) 这是我的main活动: package com.example.homework18; import android.Manifest; import android.content.Context; import android.content.pm.PackageM

我正在尝试连接到站点,使用
Jsoup
解析站点上的图像,将每个图像保存为
位图
,然后在
网格视图中显示所有这些图像。从
网格视图
中选择图像后,图像应显示在
图像视图

然而,在运行我的代码时,我得到的只是一个空白屏幕(显示了一个祝酒词)

这是我的
main活动

package com.example.homework18;

import android.Manifest;
import android.content.Context;
import android.content.pm.PackageManager;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Color;
import android.os.AsyncTask;
import android.support.v4.app.ActivityCompat;
import android.support.v4.content.ContextCompat;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.Gravity;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.GridView;
import android.widget.ImageSwitcher;
import android.widget.ImageView;
import android.widget.Toast;
import android.widget.ViewSwitcher;

import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLConnection;
import java.util.ArrayList;
import java.util.List;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

public class MainActivity extends AppCompatActivity {
    ImageView img;
    final private int REQUEST_INTERNET = 123;
    List<Bitmap> images = new ArrayList<Bitmap>();

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        if (ContextCompat.checkSelfPermission(this, Manifest.permission.INTERNET)
                != PackageManager.PERMISSION_GRANTED) {
            ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.INTERNET}, REQUEST_INTERNET);
        } else{
            downloadSomething();
        }

        final ImageSwitcher imgSwitcher = findViewById(R.id.imgSwitcher);

        imgSwitcher.setFactory(new ViewSwitcher.ViewFactory() {
            @Override
            public View makeView() {
                ImageView imgView = new ImageView(MainActivity.this);
                imgView.setScaleType(ImageView.ScaleType.FIT_CENTER);
                imgView.setBackgroundColor(Color.GREEN);
                ImageSwitcher.LayoutParams imgLayoutParams = new ImageSwitcher.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT, Gravity.CENTER_HORIZONTAL);
                imgView.setLayoutParams(imgLayoutParams);
                return imgView;

            }
        });

        GridView gridView = (GridView) findViewById(R.id.gridview);
        gridView.setAdapter(new ImageAdapter(this));
        gridView.setOnItemClickListener(new AdapterView.OnItemClickListener()
        {
            public void onItemClick(AdapterView parent, View v, int position, long id) {
                imgSwitcher.setImageResource(images.indexOf(position));
                Toast.makeText(getBaseContext(),
                        "pic" + (position + 1) + " selected",
                        Toast.LENGTH_SHORT).show();

            }
        });


    }
    private void downloadSomething() {

        //String imgurl = "http://2.bp.blogspot.com/-us_u2PBLSOI/UqgPMh7ovjI/AAAAAAAACdI/ujdyGregs6Y/s1600/amazing-butterfly-hd-image.jpg";
        String texturl = "https://www.csuohio.edu/";

        //new DownloadImageTask().execute(imgurl);
        //new DownloadTextTask().execute(texturl);
       new DownloadTextTask().execute(texturl);

    }
    private void getWebsite(String html) {
        Document doc = Jsoup.parse(html);
        Elements imgs = doc.select("img");
        int num_of_imgs = imgs.size();
        String img[] = new String[num_of_imgs];
        int i = 0;
        for(Element x : imgs){
            String url = x.absUrl("src");
            img[i] = url;
            i++;
        }

        for(String url : img){
            Bitmap image = DownloadImage(url);
            images.add(image);
        }

    }
    private Bitmap DownloadImage(String URL)
    {
        Bitmap bitmap = null;
        InputStream in = download(URL);
        if(in != null) {
            bitmap = BitmapFactory.decodeStream(in);
            try {
                in.close();
            } catch (IOException e1) {
                Log.d("NetworkingActivity", e1.getLocalizedMessage());
            }
        }
        return bitmap;
    }

    private class DownloadTextTask extends AsyncTask<String, Void, String> {
        protected String doInBackground(String... urls) {
            return DownloadText(urls[0]);
        }
        @Override
        protected void onPostExecute(String result) {
            Toast.makeText(getBaseContext(), result, Toast.LENGTH_LONG).show();
            getWebsite(result);
        }
    }

 private class DownloadImageTask extends AsyncTask<String, Void, Bitmap> {
        protected Bitmap doInBackground(String... urls) {
            return DownloadImage(urls[0]);
        }
        protected void onPostExecute(Bitmap result) {
            //ImageView img = (ImageView) findViewById(R.id.imageView);
            images.add(result);
            //img.setImageBitmap(result);
        }

    private String DownloadText(String URL)
    {
        int BUFFER_SIZE = 2000;
        InputStream in = download(URL);
        InputStreamReader isr = new InputStreamReader(in);
        int charRead;
        String str = "";
        char[] inputBuffer = new char[BUFFER_SIZE];
        try {
            while ((charRead = isr.read(inputBuffer))>0) {
                String readString = String.copyValueOf(inputBuffer, 0, charRead);
                str += readString;
                inputBuffer = new char[BUFFER_SIZE];
            }
            in.close();
        } catch (IOException e) {
            Log.d("Networking", e.getLocalizedMessage());
            return "";
        }
        return str;
    }
    private InputStream download(String URL) {
        InputStream in = null;
        try {
            in = OpenHttpConnection(URL);
            return in;
        } catch (IOException e1) {
            Log.d("NetworkingActivity", e1.getLocalizedMessage());
        }
        return null;
    }
    private InputStream OpenHttpConnection(String urlString) throws IOException
    {
        InputStream in = null;   int response = -1;  URL url = new URL(urlString);
        URLConnection conn = url.openConnection();
        if (!(conn instanceof HttpURLConnection))
            throw new IOException("Not an HTTP connection");
        try{
            HttpURLConnection httpConn = (HttpURLConnection) conn;
            httpConn.setAllowUserInteraction(false);
            httpConn.setInstanceFollowRedirects(true);
            httpConn.setRequestMethod("GET");
            httpConn.connect();
            response = httpConn.getResponseCode();
            if (response == HttpURLConnection.HTTP_OK) {
                in = httpConn.getInputStream();
            }
        }  catch (Exception ex)
        {
            Log.d("Networking", " " +ex.getLocalizedMessage());  throw new IOException("Error connecting");
        }
        return in;
    }

    public class ImageAdapter extends BaseAdapter
    {
        private Context context;
        public ImageAdapter(Context c) { context = c; }
        //---returns the number of images---
        public int getCount() { return images.size();  }
        //---returns the item---
        public Object getItem(int position) { return position; }
        //---returns the ID of an item---
        public long getItemId(int position) { return position; }
        //---returns an ImageView view---
        public View getView(int position, View convertView, ViewGroup parent) {
            ImageView imageView;
            if (convertView == null) {
                imageView = new ImageView(context);
                imageView.setLayoutParams(new GridView.LayoutParams(150, 150));
                imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
                imageView.setPadding(5, 5, 5, 5);
            } else {
                imageView = (ImageView) convertView;
            }
            imageView.setImageResource(images.indexOf(position));
            return imageView;
        }
    }
}
package.com.example.homework 18;
导入android.Manifest;
导入android.content.Context;
导入android.content.pm.PackageManager;
导入android.graphics.Bitmap;
导入android.graphics.BitmapFactory;
导入android.graphics.Color;
导入android.os.AsyncTask;
导入android.support.v4.app.ActivityCompat;
导入android.support.v4.content.ContextCompat;
导入android.support.v7.app.AppActivity;
导入android.os.Bundle;
导入android.util.Log;
导入android.view.Gravity;
导入android.view.view;
导入android.view.ViewGroup;
导入android.widget.AdapterView;
导入android.widget.BaseAdapter;
导入android.widget.GridView;
导入android.widget.ImageSwitcher;
导入android.widget.ImageView;
导入android.widget.Toast;
导入android.widget.ViewSwitcher;
导入java.io.IOException;
导入java.io.InputStream;
导入java.io.InputStreamReader;
导入java.net.HttpURLConnection;
导入java.net.URL;
导入java.net.URLConnection;
导入java.util.ArrayList;
导入java.util.List;
导入org.jsoup.jsoup;
导入org.jsoup.nodes.Document;
导入org.jsoup.nodes.Element;
导入org.jsoup.select.Elements;
公共类MainActivity扩展了AppCompatActivity{
图像视图img;
最终专用int请求_互联网=123;
列表图像=新的ArrayList();
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if(ContextCompat.checkSelfPermission(这是Manifest.permission.INTERNET)
!=PackageManager.权限(已授予){
ActivityCompat.requestPermissions(这是一个新字符串[]{Manifest.permission.INTERNET},REQUEST\u INTERNET);
}否则{
下载某物();
}
最终图像切换器imgSwitcher=findViewById(R.id.imgSwitcher);
imgSwitcher.setFactory(新的ViewSwitcher.ViewFactory(){
@凌驾
公共视图makeView(){
ImageView imgView=新的ImageView(MainActivity.this);
imgView.setScaleType(ImageView.ScaleType.FIT_CENTER);
imgView.setBackgroundColor(颜色.绿色);
ImageSwitcher.LayoutParams imgLayoutParams=新的ImageSwitcher.LayoutParams(ViewGroup.LayoutParams.WRAP_内容、ViewGroup.LayoutParams.WRAP_内容、重心、水平);
imgView.setLayoutParams(imgLayoutParams);
返回imgView;
}
});
GridView GridView=(GridView)findViewById(R.id.GridView);
setAdapter(新的ImageAdapter(this));
setOnItemClickListener(新的AdapterView.OnItemClickListener()
{
public void onItemClick(AdapterView父视图、视图v、整型位置、长id){
imgSwitcher.setImageResource(images.indexOf(position));
Toast.makeText(getBaseContext(),
“pic”+(位置+1)+“已选定”,
吐司。长度(短)。show();
}
});
}
私有void下载某物(){
//字符串imgurl=”http://2.bp.blogspot.com/-us_u2PBLSOI/UqgPMh7ovjI/AAAAAAAACdI/ujdyGregs6Y/s1600/amazing-butterfly-hd-image.jpg";
字符串纹理=”https://www.csuohio.edu/";
//新建DownloadImageTask().execute(imgurl);
//新建DownloadTextTask().execute(Texture);
新建DownloadTextTask().execute(Texture);
}
私人网站(字符串html){
Document doc=Jsoup.parse(html);
元素imgs=文件选择(“img”);
int num of_imgs=imgs.size();
字符串img[]=新字符串[num_of_imgs];
int i=0;
对于(元素x:imgs){
字符串url=x.absUrl(“src”);
img[i]=url;
i++;
}
for(字符串url:img){
位图图像=下载图像(url);
图片。添加(图片);
}
}
私有位图下载图像(字符串URL)
{
位图=空;
InputStream in=下载(URL);
if(in!=null){
位图=BitmapFactory.decodeStream(in);
试一试{
in.close();
}捕获(IOE1异常){
Log.d(“NetworkingActivity”,e1.getLocalizedMessage());
}
}
返回位图;
}
私有类DownloadTextTask扩展了AsyncTask{
受保护的字符串doInBackground(字符串…URL){
返回下载文本(URL[0]);
}
@凌驾
受保护的void onPostExecute(字符串结果){
Toast.makeText(getBaseContext(),result,Toast.LENGTH_LONG.show();
获取网站(结果);
}
}

私有类DownloadImageTask扩展了AsyncTask{ 受保护位图doInBackground(字符串…URL){ 返回下载图像(URL[0]); } 受保护的void onPostExecute(位图结果){ //ImageView img=(ImageView)findViewById(R.id.ImageView); 图像。添加(结果); //设置图像位图(结果); } 私有字符串下载文本(字符串URL) { int BUFFER_SIZE=2000; InputStream in=下载(URL); InputStreamReader isr=新的InputStreamReader(in); int-charRead; 字符串str=“”; char[]inputBuffer=新字符[BUFFER_SIZE]; 试一试{ 而((charRead=isr.read(inputBuffer))>0){ String readString=String.copyValueOf(inputBuffer,0,charRead); str+=readString;
<?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"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:orientation="vertical">
    <GridView
        android:id="@+id/gridview"
        android:layout_width="384dp"
        android:layout_height="511dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintHorizontal_bias="0.0"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="1.0" />

    <ImageSwitcher
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentStart="true"
        android:layout_below="@+id/gridview"
        android:id="@+id/imgSwitcher"
        />

</LinearLayout>