원래는 DB의 값을 불러와서 보여주던 ListView 였는데, 이 DB 테이블에 BLOB타입의 이미지를 넣고 불러오려 했는데 그 과정에서 오류가 나는듯 합니다.
일단 listActivity 입니다.
public class listActivity extends Fragment {
private static final String TAG = "listActivity";
private DbOpenHelper mDbOpenHelper;
private ArrayList<ListDto> mInfoArray;
private ListAdapter mAdapter;
private View v;
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
// TODO Auto-generated method stub
v = inflater.inflate(R.layout.listview, container, false);
setLayout();
mDbOpenHelper = new DbOpenHelper(getActivity());
try {
mDbOpenHelper.open();
} catch (SQLException e) {
e.printStackTrace();
}
// 리스트뷰 객체 참조
mInfoArray = new ArrayList<ListDto>();
doWhileCursorToArray();
// mAdapter.setArrayList(mInfoArray);
// mAdapter.notifyDataSetChanged();
for(ListDto i : mInfoArray) {
DLog.d(TAG, "mid = " + i.getMid());
DLog.d(TAG, "mname = " + i.getMname());
DLog.d(TAG, "memail = " + i.getMemail());
DLog.d(TAG, "mphone = " + i.getMphone());
DLog.d(TAG, "mcname = " + i.getMcname());
DLog.d(TAG, "mcaddr = " + i.getMcaddr());
DLog.d(TAG, "mcposition = " + i.getMcposition());
DLog.d(TAG, "mcurl = " + i.getMcurl());
DLog.d(TAG, "mncimg = " + i.getMncimg());
}
mAdapter = new ListAdapter(getActivity(), mInfoArray);
mListView.setAdapter(mAdapter);
mListView.setOnItemClickListener(ClickListener);
return v;
}
@Override
public void onDestroy() {
mDbOpenHelper.close();
super.onDestroy();
}
private OnItemClickListener ClickListener = new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
DLog.e(TAG, "position = " + position);
Intent intent = new Intent(getActivity(), MapActivity.class);
intent.putExtra("mid", mInfoArray.get(position).getMid());
intent.putExtra("mname", mInfoArray.get(position).getMname());
intent.putExtra("memail", mInfoArray.get(position).getMemail());
intent.putExtra("mphone", mInfoArray.get(position).getMphone());
intent.putExtra("mcname", mInfoArray.get(position).getMcname());
intent.putExtra("mcaddr", mInfoArray.get(position).getMcaddr());
intent.putExtra("mcposition", mInfoArray.get(position).getMcposition());
intent.putExtra("mcurl", mInfoArray.get(position).getMcurl());
intent.putExtra("mncimg", mInfoArray.get(position).getMncimg());
startActivity(intent);
return;
}
};
private void doWhileCursorToArray() {
Cursor cursor = mDbOpenHelper.selectMate();
DLog.e(TAG, "COUNT = " + cursor.getCount());
cursor.moveToFirst();
while (cursor.moveToNext()) {
ListDto listDto = new ListDto(
cursor.getInt(cursor.getColumnIndex("mid")),
cursor.getString(cursor.getColumnIndex("mname")),
cursor.getString(cursor.getColumnIndex("memail")),
cursor.getString(cursor.getColumnIndex("mphone")),
cursor.getString(cursor.getColumnIndex("mcname")),
cursor.getString(cursor.getColumnIndex("mcaddr")),
cursor.getString(cursor.getColumnIndex("mcposition")),
cursor.getString(cursor.getColumnIndex("mcurl")),
cursor.getBlob(cursor.getColumnIndex("mncimg"))
);
mInfoArray.add(listDto);
}
cursor.close();
}
private ListView mListView;
private void setLayout() {
mListView = (ListView) v.findViewById(R.id.listView1);
}
/*
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
*/
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.NFC) {
return true;
}
return super.onOptionsItemSelected(item);
}
}
그리고 여기서 ListAdapter와 ListDto에서 메소드를 불러와 리스트뷰에 표시할수 있게끔 하였는데요.
ListAdapter.java, ListDto.java 글자수 제한으로 댓글로 올리겠습니다.
코드는 이렇게 작성하였는데요. 오류 로그 에서는
bitmap = BitmapFactory.decodeByteArray(ncimg, 0, ncimg.length);
여기가 null이라고 오류가 뜨던데 왜 뜨는건지 잘 모르겠습니다.
DB에 insert할땐 문제가 없었습니다.
아 그리고 데이터를 1번 넣었을땐 리스트뷰 아무것도 표시가 되지 않고, 오류도 안뜨며
2번째에 넣었을때 앱이 중지되며 오류가 뜹니다.
개발자님들 도와주세요. 앱 개발 초보라서 부족한 점이 많네요.