android gridview没有';t显示改装后的数据
我试图从API获取一些数据,我想在android gridview没有';t显示改装后的数据,android,android-studio,android-adapter,baseadapter,android-gridview,Android,Android Studio,Android Adapter,Baseadapter,Android Gridview,我试图从API获取一些数据,我想在gridview中显示类别名称和图像,代码可以从服务器获取数据,但我认为适配器存在一些问题,导致gridview本身膨胀,这就是它根本不显示任何内容的原因 下面是代码的适配器类: public class MyAdapter extends BaseAdapter{ List<DisplayData> data= Collections.emptyList(); private Context context; private LayoutInfla
gridview
中显示类别名称和图像,代码可以从服务器获取数据,但我认为适配器存在一些问题,导致gridview
本身膨胀,这就是它根本不显示任何内容的原因
下面是代码的适配器类:
public class MyAdapter extends BaseAdapter{
List<DisplayData> data= Collections.emptyList();
private Context context;
private LayoutInflater layoutInflater;
public MyAdapter(Context context,List<DisplayData> displayDataList){
layoutInflater=LayoutInflater.from(context);
this.data=displayDataList;
this.context=context;
}
@Override
public int getCount() {
return data.size();
}
@Override
public Object getItem(int i) {
return null;
}
@Override
public long getItemId(int i) {
return 0;
}
@Override
public View getView(int i, View view, ViewGroup viewGroup) {
DisplayData temp=data.get(i);
View row=view;
MyViewHolder holder=null;
if(row==null){
LayoutInflater inflater= (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
row=inflater.inflate(R.layout.grid_item,viewGroup,false);
row.setTag(holder);
}else{
holder=(MyViewHolder)row.getTag();
}
byte[] qrimage = Base64.decode(temp.getImage().getBytes(),0);
Bitmap bmp = BitmapFactory.decodeByteArray(qrimage, 0, qrimage.length);
holder.imageView.setImageBitmap(bmp);
holder.name.setText(temp.getCatName());
return null;
}
class MyViewHolder{
ImageView imageView;
TextView name;
MyViewHolder(View view){
imageView=(ImageView) view.findViewById(R.id.categoryImageIV);
name=(TextView) view.findViewById(R.id.categoryNameTV);
}
}
}
更新:我已经将getCount从return 0更改为return data.size(),正如人们告诉我的那样,现在我在适配器的Base64解码行中发现了这个错误
FATAL EXCEPTION: main
Process: com.example.omara.beintask, PID: 1571
java.lang.IllegalArgumentException: bad base-64
at android.util.Base64.decode(Base64.java:161)
at android.util.Base64.decode(Base64.java:136)
at
com.example.omara.beintask.MyAdapter.getView(MyAdapter.java:59)
问题就在这里,您总是返回0,调用此方法以确定需要绘制的元素数:
@Override
public int getCount() {
return 0;
}
应该是:
@Override
public int getCount() {
return data.size();
}
问题就在这里,您总是返回0,调用此方法以确定需要绘制的元素数:
@Override
public int getCount() {
return 0;
}
应该是:
@Override
public int getCount() {
return data.size();
}
您需要在适配器中更改此方法,因为适配器从该方法获取数据计数 除此之外
@Override
public int getCount() {
return 0;
}
将其放在适配器类的下面
@Override
public int getCount() {
return data.size();
}
这将起作用,并将数据显示到GridView
中
要使用滑动显示图像,请使用以下代码:
Glide.with(context)
.load(SERVER_HOST + data.get(position).getImage())
.into(holder?.imageView);
您需要在适配器中更改此方法,因为适配器从该方法获取数据计数 除此之外
@Override
public int getCount() {
return 0;
}
将其放在适配器类的下面
@Override
public int getCount() {
return data.size();
}
这将起作用,并将数据显示到GridView
中
要使用滑动显示图像,请使用以下代码:
Glide.with(context)
.load(SERVER_HOST + data.get(position).getImage())
.into(holder?.imageView);
我甚至不调用它,虽然您不调用它,但适配器在内部调用它:)。您只需返回要显示的数据量即可。我已进行了更改,现在base64解码器中出现错误,这是因为现在正在调用getView()代码,并且其中存在错误。之前没有调用它,因为您对适配器说它不应该呈现任何视图(count函数返回0)。您需要重新评估代码我甚至没有调用它,虽然您不调用它,但适配器在内部调用它:)。您只需返回要显示的数据量即可。我已进行了更改,现在base64解码器中出现错误,这是因为现在正在调用getView()代码,并且其中存在错误。之前没有调用它,因为您对适配器说它不应该呈现任何视图(count函数返回0)。您需要重新评估代码我已经做了更改,现在我在base64解码中得到一个错误,它发生在
byte[]qrimage=base64.decode(temp.getImage().getBytes(),0)代码>行。请检查您的图像数据是否正确?这是我试图获取的图像“categoryImage”的json:“images/Tue-Jul-2017-596dd1a1d1bf8.jpg”因此,您可以使用Glide
库在ImageView
上显示图像。我正在检查如何首先使用Glide我已经做了更改,现在我在base64解码中收到一个错误。它发生在byte[]qrimage=base64.decode(temp.getImage().getBytes(),0)代码>行。请检查您的图像数据是否正确?这是我试图获取的图像“categoryImage”的json:“images/Tue-Jul-2017-596dd1a1b1bf8.jpg”,因此您可以使用Glide
库在ImageView
上显示图像。我正在检查如何首先使用Glide更新的答案在这里。您尝试解码的base 64字符串无效更新的答案在这里。您尝试解码的基64字符串无效