Php 来自服务器的recyclerview中未显示图像
我遵循本教程,但遇到了一些问题()。我有一个名为images的表,其中包含id列和images列 这是我的getData.phpPhp 来自服务器的recyclerview中未显示图像,php,android,sql,image,android-recyclerview,Php,Android,Sql,Image,Android Recyclerview,我遵循本教程,但遇到了一些问题()。我有一个名为images的表,其中包含id列和images列 这是我的getData.php <?php $sql = "SELECT * FROM images"; require_once('dbConnect.php'); $r = mysqli_query($con,$sql); $result = array(); while($row = mysqli_fetch_array($r)){
<?php
$sql = "SELECT * FROM images";
require_once('dbConnect.php');
$r = mysqli_query($con,$sql);
$result = array();
while($row = mysqli_fetch_array($r)){
array_push($result,array(
'name'=>$row['name'],
'url'=>$row['image']
));
}
echo json_encode(array('result'=>$result));
mysqli_close($con);
这是我的RecycleServiceAdapter:
public class RecyclerAdapter extends RecyclerView.Adapter<RecyclerAdapter.ViewHolder> {
List<ListItem> items;
public RecyclerAdapter(String[] names, String[] urls, Bitmap[] images){
super();
items = new ArrayList<ListItem>();
for(int i =0; i<names.length; i++){
ListItem item = new ListItem();
item.setName(names[i]);
item.setUrl(urls[i]);
item.setImage(images[i]);
items.add(item);
}
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View layoutView = LayoutInflater.from(parent.getContext()).
inflate(R.layout.item_list, parent, false);
ViewHolder viewHolder = new ViewHolder(layoutView);
return viewHolder;
}
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
ListItem list = items.get(position);
holder.imageView.setImageBitmap(list.getImage());
holder.textViewName.setText(list.getName());
holder.textViewUrl.setText(list.getUrl());
}
@Override
public int getItemCount() {
return items.size();
}
class ViewHolder extends RecyclerView.ViewHolder {
public ImageView imageView;
public TextView textViewName;
public TextView textViewUrl;
public ViewHolder(View itemView) {
super(itemView);
imageView = (ImageView) itemView.findViewById(R.id.items);
textViewName = (TextView) itemView.findViewById(R.id.textViewTitle);
textViewUrl = (TextView) itemView.findViewById(R.id.SimpleDescCardSub1);
}
}
}
我有一个列id和image的表(varchar300)
我最大的问题是:
任何答案都对我很有帮助。提前感谢使用Glider Library在OnBindViewHolder中显示来自服务器的图像
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
ListItem list = items.get(position);
Glide.with(this)
.load(list.getImage())
.into(imageView);
holder.textViewName.setText(list.getName());
holder.textViewUrl.setText(list.getUrl());
}
在gradle中添加此编译
compile 'com.github.bumptech.glide:glide:3.7.0'
您的图像url不正确complete@VivekMishra我从哪里获得数据库中每个图像的url?为此,我新增了一个选项:您仅保存主文件夹中的图像路径。您还应该将基本url附加到图像path@VivekMishra我认为这也是这个问题的原因,但我不知道如何获得像那个教程那样的特定url。你能帮我给出类似代码之类的解决方案吗?json响应中的url应该与使用eclipse的教程中的url类似,我没有毕加索库,所以我使用此代码。我只有glide和volley库:(等一下,我正在更改我的和,以获得glider支持库我得到这个错误
glide类型中带有(上下文)的方法不适用于glide上的参数(RecyclerAdapter)
。带有(this)…getApplicationContext()
传入glide.with(getApplicationContext())它迫使我创建新的方法GetApplicationContext,该方法的内容是什么?
public class ChildItemListJSON extends AsyncTask<Void,Void,Void> {
private Context context;
private String[] urls;
private ProgressDialog loading;
private Child_Tab1 child_Tab1;
public ChildItemListJSON(Context context, Child_Tab1 child_Tab1, String[] urls){
this.context = context;
this.urls = urls;
this.child_Tab1 = child_Tab1;
}
@Override
protected void onPreExecute() {
super.onPreExecute();
loading = ProgressDialog.show(context,"Downloading Image","Please wait...",false,false);
}
@Override
protected void onPostExecute(Void aVoid) {
super.onPostExecute(aVoid);
loading.dismiss();
child_Tab1.showData();
}
@Override
protected Void doInBackground(Void... params) {
for(int i=0; i<urls.length; i++){
ConfigChildItem.bitmaps[i] = getImage(urls[i]);
}
return null;
}
private Bitmap getImage(String bitmapUrl){
URL url;
Bitmap image = null;
try {
url = new URL(bitmapUrl);
image = BitmapFactory.decodeStream(url.openConnection().getInputStream());
}catch(Exception e){}
return image;
}
}
public class ListItem {
private String name;
private String url;
private Bitmap image;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public Bitmap getImage() {
return image;
}
public void setImage(Bitmap image) {
this.image = image;
}
}
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
ListItem list = items.get(position);
Glide.with(this)
.load(list.getImage())
.into(imageView);
holder.textViewName.setText(list.getName());
holder.textViewUrl.setText(list.getUrl());
}
compile 'com.github.bumptech.glide:glide:3.7.0'