我的Gridview适配器使用光标获取随机项

时间:2014-01-14 11:21:29

标签: android gridview cursor adapter

我试图用GridView制作一个版面。所以我用Cursors制作了一个简单的适配器,但是他在滚动GridView时获得了随机视图。我已经阅读了很多帖子但现在有人像我一样使用CursorAdapter,或者如果像我一样使用他们没有我的问题。我试过把ViewHolder,但仍然是同样的问题。

谁能说我怎么能让这项工作好吗?

以下是他拍摄的照片: 什么时候开始

photo1

photo1

滚动时

photo2

photo2

我使用的代码 对于set adapter:

cs = new CursorSongs();
aa = new AdapterAlbum(a,cs.getAllAlbums(a));
gvAlbums.setAdapter(aa);
gvAlbums.setOnItemClickListener(this);

适配器:

public class AdapterAlbum extends CursorAdapter{

public AdapterAlbum(Context context, Cursor c) {
    super(context, c,true);
    // TODO Auto-generated constructor stub
}

@Override
public void bindView(View view, Context context, Cursor cursor) {
    // TODO Auto-generated method stub
    ViewHolder holder = (ViewHolder)view.getTag();
    TextView tAlbum  = (TextView)view.findViewById(R.id.tvAlbum);
    ImageView iAlbum = (ImageView)view.findViewById(R.id.iAlbum);

    tAlbum = holder.tAlbum;
    iAlbum = holder.iAlbum;
}

@Override
public View newView(Context context, Cursor cursor, ViewGroup parent) {
    LayoutInflater i = LayoutInflater.from(parent.getContext());
    View v = i.inflate(R.layout.detalle_grid, parent,false);
    ViewHolder holder = new ViewHolder();
    holder.tAlbum = (TextView)v.findViewById(R.id.tvAlbum);
    holder.iAlbum = (ImageView)v.findViewById(R.id.iAlbum);
    holder.tAlbum.setText(cursor.getString(cursor.getColumnIndex(MediaStore.Audio.AlbumColumns.ALBUM)));
    String coverPath = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.AlbumColumns.ALBUM_ART));
    Drawable img = Drawable.createFromPath(coverPath);
    if(img != null){
        holder.iAlbum.setImageDrawable(img);
    }else{
        holder.iAlbum.setImageResource(R.drawable.albumart_mp_unknown_list);
    }
    v.setTag(holder);

    return v;
}

class ViewHolder{
    TextView tAlbum;
    ImageView iAlbum;
}

0 个答案:

没有答案