1

1.我有一个网格视图,我必须从数据库中获取图像路径并且图像是可绘制的我的问题是当我向下滚动网格视图图像变得不可见我有以下适配器 2.任何帮助????

    import android.app.Activity;
    import android.graphics.drawable.Drawable;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.BaseAdapter;
    import android.widget.ImageView;

    public class GridViewAdapter extends BaseAdapter {

    private Activity context;
    List<Fotota> list_popupBarBackGround;
    static final int ON_STICKER_LAYOUT=4;

    private static ViewHolder holder;
    private LayoutInflater l_Inflater;

    public GridViewAdapter(Activity context, List<Fotota> list_popupBarBackGround) {
    this.context = context;
    this.list_popupBarBackGround = list_popupBarBackGround;
    l_Inflater = LayoutInflater.from(context);
    }

    @Override
    public int getCount() {
    return list_popupBarBackGround.size();
    }

    @Override
    public Object getItem(int position) {
    return null;
    }

    @Override
    public long getItemId(int position) {
    return 0;  
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {

    if (convertView == null) {

    holder = new ViewHolder();

    convertView = l_Inflater.inflate(R.layout.listview_griditem, null);
    holder = new ViewHolder();
    holder.imageView = (ImageView) convertView.findViewById(R.id.icon);


    convertView.setTag(holder);

   } else {

   holder = (ViewHolder) convertView.getTag();
   }              


 holder.imageView.setImageResource(context.getResources()
.getIdentifier(list_popupBarBackGround.get(position).getThumbnail(),     "drawable",context.getPackageName()));


   return convertView;
   }

   private static class ViewHolder {
   ImageView imageView;
   }
4

3 回答 3

0

您需要在您的getItem().

ViewHolder()还要在您的getView()方法中删除您的两个实例。只需声明一次。

  @Override
   public Object getItem(int position) {
    return list_popupBarBackGround.get(position);
  }
  @Override
  public long getItemId(int position) {
      return position;  
  }
于 2013-10-03T09:34:02.160 回答
0

在适配器中覆盖这两个方法

 @Override
    public Object getItem(int position) {
    return list_popupBarBackGround.get(position);
    }

    @Override
    public long getItemId(int position) {
    return position;  
    }
于 2013-10-03T09:37:26.973 回答
-1

使用 Recyclerview 而不是 Gridview。

recyclerView.setLayoutManager(new GridLayoutManager(this, numberOfColumns));
于 2018-10-05T09:17:47.513 回答