listview
을 SimpleCursorAdapter
으로 작성합니다. getView()
을 사용하여 각 항목에 대해 이미지를 imageView
으로 설정했습니다.DateBase에서 ListView로 이미지를로드하는 방법은 무엇입니까?
이제 cursor
에 첫 번째 행에 1 개의 이미지 만 있습니다. 그러나 스크롤에서는 임의의 위치에 나타납니다. 왜 그런가?
코드
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;
}
}
를 사용합니다'편집 : 그것은 작동하지 않습니다 (0)'imgSm.setImageResource을 시도,'(BLOB가 null의 경우) – Selvin
감사합니다 !!! 작동합니다 !!!) 답을하면 받아 들일 것입니다. – Sviatoslav
여기에 더 많은 설명이 있습니다 – Selvin