android gridview没有';t显示改装后的数据

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

我试图从API获取一些数据,我想在
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字符串无效