Я заполняю свой listview
с SimpleCursorAdapter
.Используя getView()
, я установил изображение на imageView
для каждого элемента.
Теперь у меня есть только 1 изображение (в первом ряду) в моем cursor
.Но на свитке он появляется в случайных позициях.Почему это так?
код
public class MyListAdapter extends SimpleCursorAdapter{
private Cursor cur;
private Context context;
private SQLiteDatabase db;
public MyListAdapter (Context context, Cursor c, SQLiteDatabase db) {
super(context, R.layout.list_item, c, new String[] {}, new int[] {});
this.cur=super.getCursor();
this.context = context;
this.db=db;
}
private class ViewHolder {
TextView txtTitle, txtDate;
ImageView imgSm;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder = null;
if (convertView == null) {
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.list_item, null);
holder = new ViewHolder();
holder.txtTitle = (TextView) convertView.findViewById(R.id.txt_title);
holder.txtDate = (TextView) convertView.findViewById(R.id.txt_date);
holder.imgSm= (ImageView) convertView.findViewById(R.id.img_sm);
convertView.setTag(holder);
}
else {
holder = (ViewHolder) convertView.getTag();
}
this.cur.moveToPosition(position);
holder.txtTitle.setText(this.cur.getString(this.cur.getColumnIndex("title")));
holder.txtDate.setText(this.cur.getString(this.cur.getColumnIndex("date")));
byte[] blob = this.cur.getBlob(this.cur.getColumnIndex("img_sm"));
if (blob!=null) {
holder.imgSm.setImageBitmap(BitmapFactory.decodeByteArray(blob, 0, blob.length));
}
return convertView;
}
}