Java 从android Studio中的mysql数据库检索图像
我是android工作室的新手。在这里,我试图从mysql数据库中获取图像,该数据库存储在在线服务器中,并将图像显示在listvew上。但我的自定义文件中出现错误。请帮帮我 这是我的自定义Java代码: package com.example.manarpatel.book_应用程序Java 从android Studio中的mysql数据库检索图像,java,android,mysql,json,android-studio,Java,Android,Mysql,Json,Android Studio,我是android工作室的新手。在这里,我试图从mysql数据库中获取图像,该数据库存储在在线服务器中,并将图像显示在listvew上。但我的自定义文件中出现错误。请帮帮我 这是我的自定义Java代码: package com.example.manarpatel.book_应用程序 import android.app.Activity; import android.graphics.Bitmap; import android.view.LayoutInflater; import and
import android.app.Activity;
import android.graphics.Bitmap;
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 CustomList extends ArrayAdapter<String> {
private String[] urls;
private Bitmap[] bitmaps;
private Activity context;
public CustomList(Activity context, String[] urls, Bitmap[] bitmaps) {
super(context, R.layout.image_list_view, urls);
this.context = context;
this.urls= urls;
this.bitmaps= bitmaps;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = context.getLayoutInflater();
View listViewItem = inflater.inflate(R.layout.image_list_view,parent, true);
TextView textViewURL = (TextView) listViewItem.findViewById(R.id.textViewURL);
ImageView image = (ImageView) listViewItem.findViewById(R.id.imageDownloaded);
textViewURL.setText(urls[position]);
Bitmap smaller = Bitmap.createScaledBitmap(bitmaps[position], 100, 50, false);
image.setImageBitmap(smaller);
// image.setImageBitmap(Bitmap.createScaledBitmap(bitmaps[position], 100, 50, false));
return listViewItem;
}
}
导入android.app.Activity;
导入android.graphics.Bitmap;
导入android.view.LayoutInflater;
导入android.view.view;
导入android.view.ViewGroup;
导入android.widget.ArrayAdapter;
导入android.widget.ImageView;
导入android.widget.TextView;
公共类CustomList扩展了ArrayAdapter{
私有字符串[]URL;
私有位图[]位图;
私人活动语境;
公共自定义列表(活动上下文、字符串[]URL、位图[]位图){
超级(上下文、R.layout.image\u列表\u视图、URL);
this.context=上下文;
this.url=url;
this.bitmaps=位图;
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
LayoutInflater充气器=上下文。getLayoutInflater();
View listViewItem=充气机。充气(R.layout.image\u list\u视图,父视图,true);
TextView textViewURL=(TextView)listViewItem.findViewById(R.id.textViewURL);
ImageView image=(ImageView)listViewItem.findViewById(R.id.imageDownloaded);
textViewURL.setText(URL[位置]);
位图较小=位图.createScaledBitmap(位图[position],100,50,false);
image.setImageBitmap(较小);
//setImageBitmap(Bitmap.createScaledBitmap(位图[position],100,50,false));
返回listViewItem;
}
}
下面是我的imageList查看器java代码:
package com.example.manarpatel.book_app;
import android.app.ProgressDialog;
import android.content.Intent;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;
import org.json.JSONException;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
public class ImageListView extends AppCompatActivity implements AdapterView.OnItemClickListener {
private ListView listView;
public static final String GET_IMAGE_URL="http://usedbookapp.esy.es/getAllImages.php";
public GetAlImages getAlImages;
public static final String BITMAP_ID = "BITMAP_ID";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_image_list_view);
listView = (ListView) findViewById(R.id.listView);
listView.setOnItemClickListener(this);
getURLs();
}
private void getImages(){
class GetImages extends AsyncTask<Void,Void,Void>{
ProgressDialog loading;
@Override
protected void onPreExecute() {
super.onPreExecute();
loading = ProgressDialog.show(ImageListView.this,"Downloading images...","Please wait...",false,false);
}
@Override
protected void onPostExecute(Void v) {
super.onPostExecute(v);
loading.dismiss();
//Toast.makeText(ImageListView.this,"Success",Toast.LENGTH_LONG).show();
CustomList customList = new CustomList(ImageListView.this,GetAlImages.imageURLs,GetAlImages.bitmaps);
listView.setAdapter(customList);
}
@Override
protected Void doInBackground(Void... voids) {
try {
getAlImages.getAllImages();
} catch (JSONException e) {
e.printStackTrace();
}
return null;
}
}
GetImages getImages = new GetImages();
getImages.execute();
}
private void getURLs() {
class GetURLs extends AsyncTask<String,Void,String>{
ProgressDialog loading;
@Override
protected void onPreExecute() {
super.onPreExecute();
loading = ProgressDialog.show(ImageListView.this,"Loading...","Please Wait...",true,true);
}
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
loading.dismiss();
getAlImages = new GetAlImages(s);
getImages();
}
@Override
protected String doInBackground(String... strings) {
BufferedReader bufferedReader = null;
try {
URL url = new URL(strings[0]);
HttpURLConnection con = (HttpURLConnection) url.openConnection();
StringBuilder sb = new StringBuilder();
bufferedReader = new BufferedReader(new InputStreamReader(con.getInputStream()));
String json;
while((json = bufferedReader.readLine())!= null){
sb.append(json+"\n");
}
return sb.toString().trim();
}catch(Exception e){
return null;
}
}
}
GetURLs gu = new GetURLs();
gu.execute(GET_IMAGE_URL);
}
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
Intent intent = new Intent(this, ViewFullImage.class);
intent.putExtra(BITMAP_ID,i);
startActivity(intent);
}
}
package com.example.manarpatel.book\u应用程序;
导入android.app.ProgressDialog;
导入android.content.Intent;
导入android.os.AsyncTask;
导入android.os.Bundle;
导入android.support.v7.app.AppActivity;
导入android.view.view;
导入android.widget.AdapterView;
导入android.widget.ListView;
导入org.json.JSONException;
导入java.io.BufferedReader;
导入java.io.InputStreamReader;
导入java.net.HttpURLConnection;
导入java.net.URL;
公共类ImageListView扩展AppCompativeActivity实现AdapterView.OnItemClickListener{
私有列表视图列表视图;
公共静态最终字符串GET\u IMAGE\u URL=”http://usedbookapp.esy.es/getAllImages.php";
公共图书馆;
公共静态最终字符串BITMAP\u ID=“BITMAP\u ID”;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u image\u list\u视图);
listView=(listView)findViewById(R.id.listView);
setOnItemClickListener(this);
getURL();
}
私有void getImages(){
类GetImages扩展异步任务{
对话加载;
@凌驾
受保护的void onPreExecute(){
super.onPreExecute();
loading=ProgressDialog.show(ImageListView.this,“正在下载图像…”,“请稍候…”,false,false);
}
@凌驾
受保护的void onPostExecute(void v){
super.onPostExecute(v);
loading.dispose();
//Toast.makeText(ImageListView.this,“Success”,Toast.LENGTH_LONG.show();
CustomList CustomList=新的CustomList(ImageListView.this、GetAlImages.imageURLs、GetAlImages.Bitmap);
setAdapter(自定义列表);
}
@凌驾
受保护的空位背景(空位…空位){
试一试{
getAlImages.getAllImages();
}捕获(JSONException e){
e、 printStackTrace();
}
返回null;
}
}
GetImages GetImages=新建GetImages();
getImages.execute();
}
私有void getURL(){
类GetURLs扩展异步任务{
对话加载;
@凌驾
受保护的void onPreExecute(){
super.onPreExecute();
loading=ProgressDialog.show(ImageListView.this,“loading…”,“Please Wait…”,true,true);
}
@凌驾
受保护的void onPostExecute(字符串s){
super.onPostExecute(s);
loading.dispose();
getAlImages=新的getAlImages;
getImages();
}
@凌驾
受保护的字符串背景(字符串…字符串){
BufferedReader BufferedReader=null;
试一试{
URL=新URL(字符串[0]);
HttpURLConnection con=(HttpURLConnection)url.openConnection();
StringBuilder sb=新的StringBuilder();
bufferedReader=新的bufferedReader(新的InputStreamReader(con.getInputStream());
字符串json;
而((json=bufferedReader.readLine())!=null){
sb.append(json+“\n”);
}
使某人恢复原状;
}捕获(例外e){
返回null;
}
}
}
GetURLs gu=新的GetURLs();
执行(获取图片和URL);
}
@凌驾
公共无效onItemClick(AdapterView AdapterView、View视图、int i、long l){
Intent Intent=新Intent(这是ViewFullImage.class);
intent.putExtra(位图_ID,i);
星触觉(意向);
}
}
获取所有图像的java代码:
package com.example.manarpatel.book_app;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
public class GetAlImages {
public static String[] imageURLs;
public static Bitmap[] bitmaps;
public static final String JSON_ARRAY="result";
public static final String IMAGE_URL = "url";
private String json;
private JSONArray urls;
public GetAlImages(String json){
this.json = json;
try {
JSONObject jsonObject = new JSONObject(json);
urls = jsonObject.getJSONArray(JSON_ARRAY);
} catch (JSONException e) {
e.printStackTrace();
}
}
private Bitmap getImage(JSONObject jo){
URL url = null;
Bitmap image = null;
try {
url = new URL(jo.getString(IMAGE_URL));
image = BitmapFactory.decodeStream(url.openConnection().getInputStream());
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (JSONException e) {
e.printStackTrace();
}
return image;
}
public void getAllImages() throws JSONException {
bitmaps = new Bitmap[urls.length()];
imageURLs = new String[urls.length()];
for(int i=0;i<urls.length();i++){
imageURLs[i] = urls.getJSONObject(i).getString(IMAGE_URL);
JSONObject jsonObject = urls.getJSONObject(i);
bitmaps[i]=getImage(jsonObject);
}
}
}
package com.example.manarpatel.book\u应用程序;
导入android.graphics.Bitmap;
导入android.graphics.BitmapFactory;
导入org.json.JSONArray;
导入org.json.JSONException;
导入org.json.JSONObject;
导入java.io.IOException;
导入java.net.MalformedURLException;
导入java.net.URL;
公共类图书{
公共静态字符串[]imageURL
<LinearLayoutandroid:orientation="horizontal"android:layout_width="fill_parent" android:layout_height="wrap_content">
<ImageView android:id="@+id/imageDownloaded" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/abc_ic_menu_copy_mtrl_am_alpha"/>
<TextView android:id="@+id/textViewURL" android:layout_width="wrap_content" android:layout_height="wrap_content"/>
</LinearLayout>
public class NetworkImageView extends ImageView {
private String imageURL;
/**
* Resource ID of the image to be used as a placeholder until the network image is loaded.
*/
private int mDefaultImageId;
/**
* Resource ID of the image to be used if the network response fails.
*/
private int mErrorImageId;
private Bitmap bitmap;
public NetworkImageView(Context context) {
super(context);
}
public NetworkImageView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public NetworkImageView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
public String getImageURL() {
return imageURL;
}
public void setImageUrl(String imageURL) {
this.imageURL = imageURL;
Glide.with(getContext())
.load(imageURL)
.override(200, 200)
.diskCacheStrategy(DiskCacheStrategy.ALL)
.into(this);
}
/**
* Sets the default image resource ID to be used for this view until the attempt to load it
* completes.
*/
public void setDefaultImageResId(int defaultImage) {
mDefaultImageId = defaultImage;
}
/**
* Sets the error image resource ID to be used for this view in the event that the image
* requested fails to load.
*/
public void setErrorImageResId(int errorImage) {
mErrorImageId = errorImage;
}
public void setLocalImageBitmap(Bitmap bitmap) {
this.bitmap = bitmap;
}
<com.vynd.solution.utiles.NetworkImageView
android:id="@+id/backdrop"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/gradient"
android:scaleType="centerCrop"
android:src="@null" />
photo = (NetworkImageView) itemView.findViewById(R.id.photoItem);
photo.setImageUrl(url);
Picasso.with(this).load(imageURL).into(imageView);