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

커스텀리스트뷰에서 db에서 받아온 스트링문자를 집어넣으려하는데 오류좀봐주세용 ㅠㅠ

0 추천

제가 만든 커스텀리스트뷰에 DBManager.java (=데이터베이스) 에 저장되어있는 name,date를 뽑아오고싶은데 앱자체가 실행이안되네요 ㅠ.ㅠ  db를 가져오는 부분에서 오류가난거같은데 정확히 왜 오류가 나는건지 모르겠어요 ! 자바에 동적추가하는것처럼cursor이용해서 해당하는 column을 뽑아오고 그걸 listviewitem.xml에있는findviewid해서 객체잡고넣어주는데 왜 오류가나는걸까요..?mainActivity.java 

SQLiteDatabase sqlitedb;
DBManager dbmanager;
Cursor cursor;
private SimpleCursorAdapter dataAdapter;
private ListView mListView = null;
public ListViewAdapter mAdapter = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
          setContentView(R.layout.activity_main);
    mListView = (ListView) findViewById(R.id.listview);
    dbmanager = new DBManager(this);
    sqlitedb=dbmanager.getReadableDatabase();
    Cursor cursor = sqlitedb.query("customers",null,"name is not null", null,null,null,null);

    mAdapter = new ListViewAdapter(this);

    int i1 = 0;
    while(cursor.moveToNext()) {
        String textname = cursor.getString(cursor.getColumnIndex("name"));
        String textdate = cursor.getString(cursor.getColumnIndex("date"));
        mAdapter.addItem(textname, textdate);
        mListView.setAdapter(mAdapter);
        mAdapter.notifyDataSetChanged();
        i1++;
    }
    cursor.close();
    sqlitedb.close();
    dbmanager.close();

뚜루루루둡 (1,130 포인트) 님이 2016년 5월 27일 질문
/** 리스트뷰 어댑터 */
public class ListViewAdapter extends BaseAdapter {
    private Context mContext = null;
    private Cursor c;
    private ArrayList<ListData> mListData = new ArrayList<ListData>();
    private ListViewAdapter mAdapter = null;

    public ListViewAdapter(Context mContext) {
        super();
        this.mContext = mContext;
        //this.c=cursor;
    }

    @Override
    public int getCount() {
        return mListData.size();
    }
    @Override
    public Object getItem(int position) {
        return mListData.get(position);
    }
    @Override
    public long getItemId(int position) {
        return position;
    }

    public void dataChange(){
        mAdapter.notifyDataSetChanged();
    }
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        ViewHoldered holder;

        ListView listView = (ListView) findViewById(R.id.listview);
        // Assign adapter to ListView
        listView.setAdapter(dataAdapter);
        if (convertView == null) {
            holder = new ViewHoldered();
            LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            convertView = inflater.inflate(R.layout.listviewitem, null);
            holder.mIcon = (ImageView) convertView.findViewById(R.id.image_view);
            holder.mText = (TextView) convertView.findViewById(R.id.textname);
            holder.mDate = (TextView) convertView.findViewById(R.id.textdate);
            convertView.setTag(holder);
        }else{
            holder = (ViewHoldered) convertView.getTag();
        }
        ListData mData = mListData.get(position);
       holder.mText.setText(mData.mName);
       holder.mDate.setText(mData.mDate);

        return convertView;
    }
    private class ViewHoldered {
        public ImageView mIcon;
        public TextView mText;
        public TextView mDate;
    }

1개의 답변

0 추천
Cursor를 쓰신다면 CursorAdaptor를 한번 고려해 보세요.
ISPARK 님이 2016년 5월 28일 답변
...