마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

안드로이드 커스텀어댑터 질문입니다..ㅠㅠ(DB연동)

0 추천
헬퍼부분

public class DataManager {


 private Context context = null;
 private SubjectListDBHelper dbHelper = null;
 
 ArrayList<MyItem> slist = null;
 
 public DataManager(Context context) {
  this.context = context;
  dbHelper = new SubjectListDBHelper(this.context);
 }
 
// DB에서 정보를 읽어와 하나의 레코드를 하나의 객체로 생성하여 리스트에 저장후 반환
 public ArrayList<MyItem> getsubjectList() {
  slist = new ArrayList<MyItem>();

  SQLiteDatabase db = dbHelper.getReadableDatabase(); 
  String sql = "select * from subjectlist2";
  
  Cursor cursor = db.rawQuery(sql, null);

  while(cursor.moveToNext()) {
   int no = cursor.getInt(0);
   int image = cursor.getInt(1);
   String pro_name = cursor.getString(2);
   String pro_phone = cursor.getString(3);
   String subject = cursor.getString(4);
   String subject_memo = cursor.getString(5);
//   DB에서 읽어온 레코드의 값으로 새로운 자료 저장 객체 생성
   MyItem item = new MyItem(no, image, pro_name, pro_phone, subject, subject_memo);
  
//   리스트에 저장
   slist.add(item);
   Toast.makeText(context, "S", Toast.LENGTH_SHORT).show();
  }
  
  cursor.close();
  dbHelper.close();
  
  return slist;
 }



커스텀어댑터 갯뷰 부분

 @Override
 public View getView(int position, View convertView, ViewGroup parent) {
  // TODO Auto-generated method stub
  if (convertView ==  null) {
   convertView = inflater.inflate(layout,  parent, false);
  }
  
  ImageView img = (ImageView)convertView.findViewById(R.id.image);
  img.setImageResource(items.get(position).getImage());
  
  // 교수님 이름 개별 설정
  TextView pro_name =(TextView)convertView.findViewById(R.id.pro_name);
  pro_name.setText(items.get(position).getPro_name());
    
  // 교수님 과목 개별 설정
  TextView subject =(TextView)convertView.findViewById(R.id.subject);
  subject.setText(items.get(position).getSubject());
  
  return convertView;
 }


디비에 저장된 리스트 불러오기 부분
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.subjectlist_layout);
  
  dataManager = new DataManager(this);
  
  subList = (ListView)findViewById(R.id.listview1);
  // 레이아웃 리스트 가져오기
  subjectList = dataManager.getsubjectList();
  // 어레이리스트, 데이터베이스에 저장된 내용 가져오기
  adapter = new MyAdapter(this, android.R.layout.simple_list_item_1, subjectList);
  // 어댑터 연결. 데이터는 디비에서 가져온 데이터로 연결
  subList.setAdapter(adapter); 
  // 어댑터 시작
 }

}


저는 제코드가 틀린게 없는 것 같아 보이는데....
돌리면 바로 튕기네요.. .. 리스트뷰가 없어요
로그캣을 보면 갯뷰에서 set하는 부분들이 전부 널포인터라고 합니다 ㅜㅠㅜ
뭐가문제일까죠 ㅠㅠㅠ

 

익명사용자 님이 2014년 6월 25일 질문

2개의 답변

0 추천
어댑터 클래스를 상속하셔야죠 ^^
익명사용자 님이 2014년 6월 25일 답변
0 추천
웬만하면 커스텀 클래스와 커스텀 함수들은 풀소스로 올려주세요...저렇게 단편단편 올려주시면 순서도 혼란스럽고 문제점을 알아내기 힘듭니다..지금 봐서는 저 getView 안에 items에 제대로 subjectList가 전달되지 않는거 같습니다. 커스텀 어댑터 전체를 봐야 될거 같습니다..
YeonMin (17,860 포인트) 님이 2014년 6월 26일 답변
...